WriteableBitmap в .NET 4

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

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

У тебя есть идеи?

Заранее спасибо за ответ!

Ваше здоровье


person Jamie    schedule 10.06.2010    source источник


Ответы (2)


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

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

Запись в блоге о многочисленных преимуществах использования ПРГБА

person CodesInChaos    schedule 30.11.2010

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

Включение сборок 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, поэтому вам лучше попытаться использовать его самостоятельно.

person Guy    schedule 30.11.2010