2010-06-10 5 views
2

J'ai un problème: Je voudrais utiliser une méthode Render() pour l'objet WriteableBitmap. Cependant, comme je l'ai remarqué, la méthode n'est pas disponible sans utiliser un assembly Silverlight System.Windows.dll. J'ai besoin d'utiliser RenderTargetBitmap dans mon projet (assembly PresentationCore pour le standard .net). Voici le problème - il existe des définitions de certaines classes dans les deux assemblées, donc elles sont en conflit.WriteableBitmap dans .NET 4

Fondamentalement, j'ai besoin d'ajouter quelques trucs à bitmap Bgra32. Cependant, RenderTargetBitmap fonctionne uniquement avec ceux de Pbgra32. J'ai trouvé que l'utilisation de WriteableBitmap pour le rendu serait bien. Peut-être que je me trompe?

Avez-vous des idées?

Merci d'avance pour la réponse!

Vive

Répondre

0

Convertissez votre entrée en alpha pré-multipliée, effectuez tous vos calculs dans cet espace colorimétrique et convertissez votre sortie. La multiplication par alpha n'est pas difficile à coder. Effectuer tous les calculs dans l'espace couleur alpha pré-multiplié permet souvent une meilleure qualité de sortie (par exemple, le filtrage fonctionne beaucoup mieux) et présente également d'autres avantages.

Blog-entry on the numerous advantages of using PRGBA

1

Je sais que cela a été demandé il y a un certain temps, mais il est venu dans une recherche que je l'ai fait pour une question connexe, donc je pensais que je laisserais une brève réponse pour quelqu'un d'autre qui a trébuché sur elle. Y compris les assemblages Silverlight et WPF n'est PAS une bonne idée. À peu près tout ce dont vous avez besoin de Silverlight sera dans WPF d'une manière ou d'une autre, donc à moins que vous ne fassiez un projet Silverlight (et n'utilisez pas les assemblys WPF) ne les incluez pas!

Pour votre problème, la conversion entre Pbgra et BGRA n'est pas particulièrement difficile et est décrit ici:

http://www.i-programmer.info/programming/wpf-workings/538-rendertargetbitmap-visual-vector-to-bitmap.html. En outre, RenderTargetBitmap fait la même chose que la méthode Render, donc vous feriez mieux d'essayer de l'utiliser par lui-même. En plus, RenderTargetBitmap fonctionne de la même manière que la méthode Render.