WriteableBitmap:内存分配不匹配 - 如何解决?
WritableBitmap: Memory allocation mismatch - How to solve?
在我的程序中,我尝试读取调色板图像的 (FormatConvertedBitmap
with format Indexed4
) pixels using a WritableBitmap
。
生成的图像的尺寸为 20 * 27 像素。
调色板有 16 种颜色,因此每种颜色占一个半字节,每个字节包含两个像素。
但是,在内存中,WPF 会在每个像素行的末尾添加一个额外的 DWORD:
我无法解决这种不匹配的特定像素。
我需要检查什么 BitmapSource 属性 才能计算出该图像的正确步幅?
WPF BitmapSource 可以使用它喜欢的任何步幅,前提是它可以保存一行中所有像素的值。特别是,它可以针对任何类型的优化内存访问调整步幅。
底层缓冲区的大小是通过将步幅乘以行数来计算的:
WritableBitmap bitmap = ...
var bufferSize = bitmap.BackBufferStride * bitmap.PixelHeight;
在我的程序中,我尝试读取调色板图像的 (FormatConvertedBitmap
with format Indexed4
) pixels using a WritableBitmap
。
生成的图像的尺寸为 20 * 27 像素。
调色板有 16 种颜色,因此每种颜色占一个半字节,每个字节包含两个像素。
但是,在内存中,WPF 会在每个像素行的末尾添加一个额外的 DWORD:
我无法解决这种不匹配的特定像素。
我需要检查什么 BitmapSource 属性 才能计算出该图像的正确步幅?
WPF BitmapSource 可以使用它喜欢的任何步幅,前提是它可以保存一行中所有像素的值。特别是,它可以针对任何类型的优化内存访问调整步幅。
底层缓冲区的大小是通过将步幅乘以行数来计算的:
WritableBitmap bitmap = ...
var bufferSize = bitmap.BackBufferStride * bitmap.PixelHeight;