2010-06-10 4 views
2

У меня проблема: я хотел бы использовать метод Render() для объекта WriteableBitmap. Однако, как я заметил, этот метод недоступен без использования сборки Silverlight System.Windows.dll. Мне нужно использовать RenderTargetBitmap в моем проекте (сборка PresentationCore для стандартного .net). Вот в чем проблема: в обеих сборках есть определения некоторых классов, поэтому они находятся в конфликте.WriteableBitmap в .NET 4

В принципе, мне нужно добавить материал к растровому изображению Bgra32. Однако RenderTargetBitmap работает только с Pbgra32. Я обнаружил, что использование WriteableBitmap для рендеринга было бы неплохо. Может, я ошибаюсь?

Есть ли у вас идеи?

Заранее благодарю за ответ!

Приветствия

ответ

0

Преобразуйте свой вход в предварительно умноженную альфу, выполните все вычисления в этом цветовом пространстве и преобразуйте выходные данные обратно. Умножение на альфа-код непросто.

Выполнение всех вычислений в расширенном альфа-цветовом пространстве часто приводит к получению более качественного результата (например, фильтрация работает намного лучше) и имеет некоторые другие преимущества.

Blog-entry on the numerous advantages of using PRGBA

1

Я знаю, что это было предложено некоторое время назад, но она пришла в поиске я сделал для связанного с этим вопроса, поэтому я думал, я хотел бы оставить краткий ответ для всех, кто споткнулся на него.

В том числе сборка Silverlight и WPF НЕ является хорошей идеей. Практически все, что вам нужно от Silverlight, будет в WPF так или иначе, поэтому, если вы не выполняете проект Silverlight (а не используете сборки WPF), их не включать!

Для вашей проблемы, преобразование между Pbgra и Bgra не является особо сложным и описано здесь:

http://www.i-programmer.info/programming/wpf-workings/538-rendertargetbitmap-visual-vector-to-bitmap.html.

Кроме того, RenderTargetBitmap делает то же самое, что и метод Render, поэтому вам лучше попытаться использовать его самостоятельно.

Смежные вопросы