by Fabien Lavocat
10. September 2009 03:30
Aujourd’hui, une petite astuce pour afficher une image dans un ToolTip d’un contrôle WPF. Dans un prochain article, je vous montrerai comment faire pour personnaliser encore plus un ToolTip, mais si vous comprenez cet article, vous comprendrez vite comment le personnaliser.
On va donc commencer par créer une application WPF avec un bouton (vous pouvez mettre n’importe quel contrôle). Je vais lui donner un nom (Name), lui donner un texte (Content) puis pour mettre un texte dans le ToolTip, je spécifie la propriété ToolTip. Vous connaissez plus simple ?
Ce qui nous donne :
Trop simple pour nous. Allons un peu plus loin maintenant et affichons une image à la place du texte. Je vais maintenant donner à la propriété ToolTip non plus un simple texte mais un objet Image :
Ce qui nous donne un résultat bien meilleur :
Maintenant, en code, c’est un peu plus complexe mais surmontable.
Mon objet Image attend à sa propriété Source, un objet de type ImageSource, or BitmapImage dérive de BitmapSource qui lui-même dérive de ImageSource.
Si maintenant je souhaite contrôler la taille de mon image si je la charge dynamiquement, il faut rajouter des contrôles sur les hauteur / largeur de l’objet Image et non pas BitmapImage.
// Création de notre Bitmap qui sera la source de notre Image
BitmapImage bi = new BitmapImage(new Uri(@"C:\Users\ \Desktop\WPF.jpg", UriKind.RelativeOrAbsolute));
// Création d'une image que l'on va associé au ToolTip
Image img = new Image();
// Réduire la taille de l'image si la largeur est plus grande que 300px
if (bi.Width > 300)
{
Double newHeigh = bi.Height * 300 / bi.Width;
img.Height = newHeigh;
img.Width = 300;
}
// Réduire la taille de l'image si la hauteur est plus grande que 300px
if (bi.Height > 300)
{
Double newWidth = bi.Width * 300 / bi.Height;
img.Width = newWidth;
img.Height = 300;
}
// Affectation du Bitmap à la source de Image
img.Source = bi;
// Affectation de Image au ToolTip du bouton
bt.ToolTip = img;
70d31030-4952-4dbf-b161-939af35277b0|2|4.5
Tags: wpf