2010-09-02 7 views
2

le problème est le suivant:manipulation bitmap efficace dans WPF (C#)

J'ai un bitmap rendu dans un tableau d'octets (avec l'en-tête bitmap). Maintenant, je veux manipuler le contenu d'un bitmap. Pour cela, j'ai besoin d'envelopper ce tableau avec une classe de haut niveau, disons BitmapImage. Je veux éviter de copier le tableau, ou sa partie de données etc. Je veux simplement forcer .NET à interpréter mon tableau d'octets comme BitmapImage. Je veux changer le contenu en rendant quelques choses à RenderTargetBitmap, puis interpréter ses bits de données comme les bits de mon image. Pour le rendu, je dois utiliser la paire standard DrawingContext, DrawingVisual. Ainsi, ce serait génial si je pouvais TRAVAILLER sur la partie de données de mon tableau d'octets et rendre mon image finale à ce sous-tableau. Ensuite, je n'ai pas eu besoin d'effectuer de copie et la performance serait géniale.

Comment accélérer le calcul et obtenir des résultats à couper le souffle? :-)

Merci d'avance pour les réponses!

Vive

Répondre

2

j'utiliser Writeablebitmap, manipuler dans le code, puis le montrer dans l'image. Selon le contexte, la mise en cache pourrait faire un excellent travail.

+0

Yup, j'ai pensé à WriteableBitmap, mais comment rendre DrawingVisual à cela, sans copier les données en arrière et en avant? Je voudrais éviter la copie pour des raisons de performance ... Que suggérez-vous? – Jamie

+0

Pour autant que je sache, ce n'est pas possible sans copie. Puis-je demander ce que vous aimeriez accomplir? Vous voulez fusionner DrawingVisual (graphique vectoriel) avec une image? Peut-être que vous pouvez le placer au-dessus de cette image (utiliser Canvas Zindex par exemple) de sorte qu'il ressemblera à une image –

+0

Oui, je veux fusionner DrawingVisual avec une image (que j'ai actuellement comme tableau d'octets) ... – Jamie