0

Можно ли добавить прозрачность в WriteableBitmap в Windows Phone 8.1 с программным обеспечением C#/WinRT?Сделать WriteableBitmap прозрачным в Windows Phone 8.1 C# WinRT Programmatically

Я ссылаюсь на библиотеку WriteableBitmapEx в моем проекте для изменения размера и блистания изображения, что весьма полезно, и это также может помочь с добавлением прозрачности или альфа-каналов/слоев, но документация не очень тщательная.

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

Идея состоит в том, что пользователь может выбрать изображение или графику и прикрепить его к стартовому экрану, а приложение сделает цвет фона прозрачным ... вероятно, белым или черным или даже с использованием первого X/Y координирует цвет фона изображения.

ответ

0

Вы пробовали использовать прозрачный цвет с помощью WriteableBitmapEx? Например, чтобы очистить весь использовать растровую:

writeableBitmap = new WriteableBitmap(200, 200, 96, 96, PixelFormats.Bgra32, null); 
writeableBitmap.Clear(Colors.Transparent); 
+0

Это делает изображение прозрачным. Я хочу сделать только один конкретный цвет прозрачным ... цветом фона. – theMaxx

0

Если вы хотите редактировать конкретные пиксели сами - вы должны получить доступ к PixelBuffer собственности. Я уверен, что WriteableBitmapEx делает это все время. Так делает мой инструментарий here. Я не могу вспомнить формат пикселей прямо сейчас, но я думаю, что это похоже на ARGB или P-ARGB? Я, скорее всего, запутался здесь, но в основном ваш буфер пикселей - это массив, который имеет данные для всех строк пикселей с каждым пикселем, определяемым 4 байтами, поэтому битовая карта 2x2 будет иметь что-то вроде ARGBARGBARGBARGB байтов, где каждая буква является одним из четырех пикселей (0-255 с 0 без цвета и 255 для всех RGB, являющихся белыми). R - красный, G - зеленый, B - синий, а A - альфа - непрозрачность или прозрачность. В форматах P- или Premultiplied-pixel - все значения RGB дополнительно умножаются на значение альфа-канала для повышения производительности (IIRC).

Вам нужно будет прокрутить все ваши пиксели и установить значения ARGB в соответствии с вашими правилами, чтобы при необходимости добавлять прозрачность, возможно, без предварительного умножения и предварительного умножения RGB.