Bonjour à tous, Ici nous allons voir comment intégrer une image dans une interface GUI avec PowerShell
Prenons une interface Basic, avec:
– une form (forcément sinon on pourrait rien faire)
– une zone image
– une deuxième zone image plus petite
Pour commencer, nous avons besoin d’une image, je l’ai placé dans mon disque D: et je l’ai nommé smile-petit.png
Voici le PowerShell GUI de base que nous allons utilisé
[xml]$xaml = @" <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Name="Window" Title="Intégration image" Height="174.865" Width="328.885"> <Grid> <Image x:Name="image" HorizontalAlignment="Left" Height="99" Margin="10,0,0,0" VerticalAlignment="Top" Width="170"/> <Image x:Name="image_petit" HorizontalAlignment="Left" Height="45" Margin="202,71,0,0" VerticalAlignment="Top" Width="56"/> </Grid> </Window> "@ #********************************************************* # Permet de lancer le script # sans devoir passer par Windows PowerShell ISE #********************************************************* [void][System.Reflection.Assembly]::LoadWithPartialName('presentationframework') #********************************************************* #Changement du XAML et et création de la fenêtre #********************************************************* $reader = (New-Object System.Xml.XmlNodeReader $xaml) $window = [Windows.Markup.XamlReader]::Load($reader) #********************************************************* # Affichage de la fenêtre #********************************************************* $window.ShowDialog()
Ensuite, il faut lancer la commande suivante en PowerShell pour convertir l’image en 64bits.
[convert]::ToBase64String((get-content 'D:\smile-petit.png' -encoding byte))
On récupère le résultat qu’on met dans une variable
#********************************************************* #Création de l'image en 64bits #********************************************************* # Commande PowerShell a utilisé # [convert]::ToBase64String((get-content 'D:\smile-petit.png' -encoding byte)) $Logo = "xxxxxx"
Ensuite on va utiliser cette variable pour l’afficher en tant que Icone dans la barre menu
#********************************************************* # Définition de l'image en tant que icone de barre #********************************************************* $bitmap = New-Object System.Windows.Media.Imaging.BitmapImage $bitmap.BeginInit() $bitmap.StreamSource = [System.IO.MemoryStream][System.Convert]::FromBase64String($Logo) $bitmap.EndInit() $bitmap.Freeze() $window.Icon = $bitmap
Maintenant on va l’insérer dans les Zones Image de notre GUI
#********************************************************* #Insertion de l'image dans la Zone Image du XAML #********************************************************* $image.source = $bitmap $imagePetit.source = $bitmap #on remarque que l'image s'adapte en fonction de la zone d'image définie
Voici le résultat de mon code:
Voici le script complet de mon interface: IntegrationImageGUI
Maintenant plus d’excuse pour rendre son interface plus visuelle.