J’ai sous- Canvas
afin de pouvoir redéfinir sa fonction de Render
. J’ai besoin de savoir comment charger un bitmap dans WPF et le restituer sur le canevas. Je suis complètement nouveau dans WPF et je n’ai trouvé aucun tutoriel qui explique comment faire quelque chose d’aussi apparemment sortingvial. Des instructions pas à pas avec des exemples seraient formidables.
Cela devrait vous aider à démarrer:
class MyCanvas : Canvas { protected override void OnRender (DrawingContext dc) { BitmapImage img = new BitmapImage (new Uri ("c:\\demo.jpg")); dc.DrawImage (img, new Rect (0, 0, img.PixelWidth, img.PixelHeight)); } }
Dans WPF, il est rare que vous OnRender
remplacer OnRender
surtout si vous ne vouliez que dessiner un fichier BMP vers un arrière-plan:
Si vous souhaitez peindre l’arrière-plan d’une canvas, je vous recommande d’utiliser ImageBrush
comme Background
– Background
, car c’est simple, vous n’avez pas besoin de sous-classe Canvas
pour remplacer Onender
.
Mais je vais vous donner un code source de démonstration pour ce que vous avez demandé:
Créer une classe (je l’ai appelée ImageCanvas
)
using System.Windows; using System.Windows.Controls; using System.Windows.Media; namespace WpfApplication1 { public class ImageCanvas : Canvas { public ImageSource CanvasImageSource { get { return (ImageSource)GetValue(CanvasImageSourceProperty); } set { SetValue(CanvasImageSourceProperty, value); } } public static readonly DependencyProperty CanvasImageSourceProperty = DependencyProperty.Register("CanvasImageSource", typeof(ImageSource), typeof(ImageCanvas), new FrameworkPropertyMetadata(default(ImageSource))); protected override void OnRender(System.Windows.Media.DrawingContext dc) { dc.DrawImage(CanvasImageSource, new Rect(this.RenderSize)); base.OnRender(dc); } } }
Maintenant, vous pouvez l’utiliser comme ceci: