samedi 1 décembre 2012

Ajouter une image dans une fenêtre.

Dans les exemples que nous allons voir, j'utilise différentes méthodes pour charger une image dans une PictureBox. Pour commencer, je vais directement charger ma PictureBox avec une image qui se trouve sur mon disque dur.

 
#Ouvre une fenêtre.
[Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$form = New-Object Windows.Forms.Form
$form.text = "Contrôles"            
$form.Size = New-Object System.Drawing.Size(200,220)

#Création d'une image (PictureBox).
$image1 = New-Object System.Windows.Forms.pictureBox
$image1.Location = New-Object Drawing.Point 40,40
$image1.Size = New-Object System.Drawing.Size(100,100)
$image1.image = [system.drawing.image]::FromFile("C:\jumbor.jpg")

#Attache les contrôles à la fenêtre.
$form.controls.add($image1)

#Affiche le tout.
$form.ShowDialog()

#Fin.

Dans ce deuxième exemple, je précharge l'image en mémoire avant de l'utiliser. Ceci peut être utile si on utilise plusieurs fois la même image dans plusieurs contrôles différents, car cela évite de charger plusieurs fois l'image depuis le disque dur.

 
#Chargement de l'image en mémoire
$pic1 = new-object System.Drawing.Bitmap("C:\jumbor.jpg")

#Ouvre une fenêtre.
[Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$form = New-Object Windows.Forms.Form
$form.text = "PictureBox"            
$form.Size = New-Object System.Drawing.Size(200,220)

#Création d'une image (PictureBox).
$image1 = New-Object System.Windows.Forms.pictureBox
$image1.Location = New-Object Drawing.Point 40,40
$image1.Size = New-Object System.Drawing.Size(100,100)
$image1.image = $pic1

#Attache les contrôles à la fenêtre.
$form.controls.add($image1)

#Affiche le tout.
$form.ShowDialog()

#Fin.

Dans ce troisième exemple l'image est directement intégrée dans le script. L'avantage, c'est qu'il n'est plus nécessaire d'ouvrir un fichier extérieur.

 
#Image au format Base64String.
$pic1 = "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"

#Conversion de l'image en mode graphique.
$pic1 = [System.Convert]::FromBase64String($pic1)

#Ouvre une fenêtre.
[Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$form = New-Object Windows.Forms.Form
$form.text = "PictureBox"            
$form.Size = New-Object System.Drawing.Size(200,220)

#Création d'une image (PictureBox).
$image1 = New-Object System.Windows.Forms.pictureBox
$image1.Location = New-Object Drawing.Point 40,40
$image1.Size = New-Object System.Drawing.Size(100,100)
$image1.image = $pic1

#Attache les contrôles à la fenêtre.
$form.controls.add($image1)

#Affiche le tout.
$form.ShowDialog()

#Fin.

Pour intégrer une image dans le code powershell, j'ouvre une image gif, jpg ou png, et je la convertir en texte. Le script suivant permet de convertir une image en fichier texte.

#Convertir un fichier image en fichier text.
$FilePath = "C:\jumbor.jpg"
$SaveTo = "C:\jumbor.txt"
[byte[]]$Data = Get-Content $FilePath -Encoding Byte
[system.convert]::ToBase64String($Data) | Set-Content $SaveTo

#Fin.

Puis pour intégrer cette image dans un script, il suffit d'ouvrir le fichier texte, copier le contenu, et coller le tout dans le script en ajoutant des guillemets au début et à la fin du texte :

$pic1 = "<coller le texte ici>"