Je veux utiliser le dessin GDI + dans mon contrôle WPF. P>
5 Réponses :
Essayez de composer un contrôle utilisateur de formulaire Windows dans votre projet WPF et encapsulez le dessin GDI +. Voir Procédure à suivre: Hébergement d'un contrôle de l'utilisateur Windows Formulaire en utilisant le concepteur WPF p>
Sans utiliser les WinForms, il y a un moyen d'utiliser GDI + Dessin à l'aide de System :: Dessin :: Classe graphique?
WPF est livré avec de nouvelles fonctionnalités graphiques, vous pouvez enquêter ici A >, mais si vous souhaitez utiliser une ancienne API GDI + une seule façon de faire, c'est créer Winform Tirez-vous et l'organiser dans WPF P>
Sans utiliser les WinForms, il y a un moyen d'utiliser GDI + Dessin à l'aide de System :: Dessin :: Classe graphique?
Vous pouvez écrire une interopie natale en utilisant dllimport to gdi +
Aussi Stackoverflow.com/questions/271686/... Ce message peut aider
C'est généralement une mauvaise idée. WPF est une API totalement nouvelle et mélange dans GDI + peut entraîner de mauvaises performances, des fuites de mémoire et d'autres objets indésirables. P>
Cette réponse n'est évidemment pas basée sur une expérience réelle avec ces technologies.
Il y a plusieurs façons de le faire, les plus faciles seraient de verrouiller votre bitmap que vous avez manipulé avec GDI, obtenez le tampon de pixels (Scan0 intPTR dans le bitmapdata que vous obtenez de la serrure). CopyMemory (...) de votre tampon de pixel à un WRITEOFYBITMAP.backbuffer . P>
Il existe des façons plus performantes dans WPF, comme à l'aide de l'interopbitmap au lieu de WripeOfBitMap. Mais cela a besoin de plus p / invoke. P>
La solution de @jeremiah Morrill est ce que vous feriez au cœur. Cependant, Microsoft était assez agréable pour fournir des méthodes interopes:
Quel est le GDI code> Espace de noms? On dirait que vous avez aliasé
system.drawing code> à
gdi (c'est-à-dire à l'aide de gdi = system.drawing) code> - pouvez-vous confirmer?
Système d'aliasing.Drawing to GDI Dans cet exemple est une mauvaise idée, car vous ne pouvez pas simplement copier et coller le code et ajoute également plus de confusion pour les lecteurs.
Y a-t-il une raison pour aliaser l'espace de noms? Bitmap a-t-il d'autres implémentations?
Des raisons pour lesquelles? J'aimerais savoir
Performance. GDI est beaucoup plus rapide que le WPF à dessiner un grand nombre de lignes, des formes