WPF, C#: Dessiner une ligne sur des bitmap dans le contrôle de l'image
J'ai une image bitmap dans un contrôle image
J'ai besoin de tracer une ligne rouge sur l'image bitmap chaque fois que je clique avec la souris sur celui-ci, à l'endroit où j'ai cliqué sur la souris.
J'ai d'abord pensé à la création d'une Ligne d'objet, mais que je ne peux pas ajouter la Ligne. J'aurais besoin d'une toile. Mais si j'ai mis mon image dans un canvas, mon bitmap ne s'est pas étendu sur l'ensemble de la toile (j'ai découvert que les coordonnées de l'image bitmap de déterminer l'endroit sur la toile, alors, mon bitmap est mal affiché.)
Ensuite, j'ai essayé à l'aide de graphiques
Graphics graphics = Graphics.FromImage(bitmapImg);
graphics.DrawLine(new System.Drawing.Pen(System.Drawing.Color.Red), 0, 0, bitmapImg.Width, bitmapImg.Height); //not the line yet, just for testing
graphics.DrawImage(bitmapImg, 0, 0, bitmapImg.Width,bitmapImg.Height);
graphics.Dispose();
Cependant, je ne suis pas d'obtenir quoi que ce soit peint sur mon bitmap........
Maintenant, je pense que j'ai probablement à obtenir l'image bitmap dans un tableau et ensuite changer la couleur du pixel pour obtenir la ligne dans le bitmap. Je crois que ce serait très lent.
Je suis maintenant essayer quelque chose avec visualDrawing, cependant, je n'ai pas réussi à le faire fonctionner:-(
Ce qui est un bon moyen d'obtenir une ligne sur un bitmap dans WPF C#???? et comment le supprimer?
Je serais heureux pour toute aide! Merci!!!! J'ai déjà posté sur la MME page du forum, mais pas de réponse jusqu'à présent.
OriginalL'auteur Natalie | 2011-03-08
Vous devez vous connecter pour publier un commentaire.
Lorsque vous ne
Graphics.FromImage
, ceGraphics
classe (et aussi leSystem.Drawing.Pen
) n'appartiennent pas à WPF, ils font partie de WinForms et ils sont à l'interne à l'aide de Windows GDI+ appels à dessiner et ne peut pas dessiner sur le dessus de WPF.Si vous n'avez pas eu une erreur lors de la compilation de la première ligne de votre code, puis sans doute votre
bitmapImg
est unSystem.Drawing.Image
(à partir de WinForms) n'est pas un contrôle de l'Image à partir de WPF (System.Window.Controls.Image
).Comme adrianm mentionné, le moyen le plus facile sera probablement utiliser une Grille:
Puis, dans votre gestionnaire d'événements click vous pouvez prendre la ligne visible et de lui donner les coordonnées que vous souhaitez:
Il fonctionne! Bien sûr, la ligne n'a pas de zoom, mais c'est pas un problème pour l'instant. Je vous remercie beaucoup!
OriginalL'auteur Andrei Pana
Vous pouvez placer une toile avec l'arrière-plan transparent sur le dessus de votre BitmapImage puis tracer la ligne que nécessaire.
Code de fichier xaml:
Code de Xaml.cs:
sortie
Ou vous pouvez même ajouter un ZIndex à votre image et à la Ligne de sorte qu'ils sont disposés sur des couches différentes sur la toile.
OriginalL'auteur Shantanu Methikar