Placer un bitmap dans le canevas en C #

Dupliquer possible:
Comment faire pour rendre bitmap dans la canvas dans WPF?

Ce que je veux est simple. Je souhaite placer une image BitmapImage dans une Canvas en C #. Mon application est basée sur WPF. J’ai cherché cela et j’ai trouvé des questions similaires, mais je ne trouvais pas ce que je cherchais.

En bref, j’ai ceci:

 BitmapImage img = new BitmapImage(new Uri("c:\\xyz.jpg")); 

Et je veux mettre cela dans la canvas, la moyenne n’est pas si importante que ça, ça peut être un rectangle ou autre chose.

Un object BitmapImage ne peut pas être positionné dans un Canvas car il ne s’agit pas d’un contrôle. Ce que vous pouvez faire est de dériver votre propre classe du Canvas et de remplacer la méthode OnRender() pour dessiner votre bitmap. Fondamentalement, quelque chose comme ça:

 class CanvasWithBitmap : Canvas { public CanvasWithBitmap() { _image = new BitmapImage(new Uri(@"c:\xyz.jpg")); } protected override void OnRender(DrawingContext dc) { dc.DrawImage(_image, new Rect(0, 0, _image.PixelWidth, _image.PixelHeight)); } private BitmapImage _image; } 

Bien sûr, vous devrez peut-être exposer le chemin du fichier et ses coordonnées à l’intérieur du Canvas via les propriétés. Si vous ne voulez pas déclarer votre propre classe uniquement pour dessiner un bitmap, vous ne pouvez pas utiliser directement la classe BitmapImage . Le contrôle d’affichage d’images est Image , essayons ceci:

 BitmapImage bitmap = new BitmapImage(); bitmap.BeginInit(); bitmap.UriSource = new Uri(@"c:\xyz.jpg"); bitmap.EndInit(); Image image = new Image(); image.Source = bitmap; 

Vous pouvez maintenant placer le contrôle Image où vous voulez dans le Canvas .