首页 > 解决方案 > WritableBitmap:内存分配不匹配 - 如何解决?

问题描述

在我的程序中,我尝试FormatConvertedBitmap使用.Indexed4WritableBitmap

结果图像的尺寸为 20 * 27 像素。

调色板有 16 种颜色,因此每种颜色都有一个半字节,每个字节带有两个像素。

但是,在内存中,WPF 会在每个像素行的末尾添加一个额外的 DWORD:

WPF WritableBitmap 内存分配

我无法解决这种不匹配的特定像素。


我需要检查哪些 BitmapSource 属性才能计算此图像的正确步幅?

标签: wpfwritablebitmap

解决方案


WPF BitmapSource 可以使用它喜欢的任何步幅,前提是它可以保存一行中所有像素的值。特别是,它可以为任何类型的优化内存访问调整步幅。

底层缓冲区的大小是通过将步幅乘以行数来计算的:

WritableBitmap bitmap = ...
var bufferSize = bitmap.BackBufferStride * bitmap.PixelHeight;

推荐阅读