Я хочу создать WriteableBitmap
, а затем установить его как Image.Source
. Меня интересует только RGB с полной непрозрачностью, поэтому я выбрал формат Bgr24
.
Теперь, когда я пытаюсь записать несколько пикселей в растровое изображение, используя WritePixels()
Iполучить Размер буфера недостаточен исключение.
wb = new WriteableBitmap(255, 255, 96d, 96d, PixelFormats.Bgr24, null);
for (int x = 0; x < wb.PixelWidth; x++)
{
for (int y = 0; y < wb.PixelHeight; y++)
{
byte blue = GetBlue();
byte green = GetGreen();
byte red = GetRed();
byte[] pixelColor = { blue, green, red };
// position where the pixel will be drawn
Int32Rect rect = new Int32Rect(x, y, 1, 1);
int stride = wb.PixelWidth * wb.Format.BitsPerPixel / 8;
// Write the pixel.
wb.WritePixels(rect, pixelColor, stride, x);
}
}
Вот мой вопрос, не достаточно ли pixelColor
размер (3 байта) для этой операции?
Редактировать
Это работает, только если я инициализирую WriteableBitmap
как с width
и height
из 1.
wb = new WriteableBitmap(255, 255, 96d, 96d, PixelFormats.Bgr24, null);
Является ли размер rect
s проблемой?