откуда взялись PixelFormats и WriteableBitmap.Блокировка в Silverlight3?

StackOverflow https://stackoverflow.com/questions/1827355

Вопрос

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

Возвращаясь к ним сегодня с последним установщиком Silverlight3 (3.0.40624.0), API, похоже, изменился.

Я разобрался с некоторыми изменениями.Например, средство доступа к массиву WriteableBitmap исчезло, но я нашел его в свойстве new Pixels, поэтому вместо записи:

 bmp[x]

Я могу писать

bmp.Pixels[x]

Существуют ли аналогичные простые замены для этих вызовов, или изменился сам шаблон использования?

bmp = new WriteableBitmap(width, height, PixelFormats.Bgr32);
bmp.Lock();
bmp.Unlock();

Кто-нибудь может указать мне на рабочий пример использования обновленного API?

Это было полезно?

Решение

Что произойдет, если вы не будете использовать Lock и Unlock и просто используйте WritabelBitmap(int, int) конструктор?Что-нибудь ломается?

Казалось бы, между бета-версией SL3 и релизом этот API изменился. Смотрите раздел "Основные изменения" в документе Errata (Silverlight 3)

Другие советы

Еще одна важная деталь о переходе на новую WriteableBitmap приведена в этот ответ ...поскольку формат пикселей теперь всегда pbgra32, вы должны установить альфа-значение для каждого пикселя, иначе вы просто получите полностью белое изображение.Другими словами, код, который ранее генерировал значения пикселей, подобные этому:

byte[] components = new byte[4];
components[0] = (byte)(blue % 256);       // blue
components[1] = (byte)(grn % 256);        // green
components[2] = (byte)(red % 256);        // red
components[3] = 0;                        // unused

должно быть изменено на чтение:

byte[] components = new byte[4];
components[0] = (byte)(blue % 256);       // blue
components[1] = (byte)(grn % 256);        // green
components[2] = (byte)(red % 256);        // red
components[3] = 255;                      // alpha
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top