Gav*_*n S 5 wpf pixelformat rendertargetbitmap
我期待呈现DrawingVisual(在示例性视觉)到使用位图RenderTargetBitmap的观点来设置此位图作为背景的Canvas,如下:
var bmp = new RenderTargetBitmap(2000, 50, 120, 96, PixelFormats.Indexed2);
bmp.Render(visual);
var brush = new ImageBrush(bmp) { Stretch = Stretch.Fill };
Canvas.Background = brush;
Run Code Online (Sandbox Code Playgroud)
当使用PixelFormats.Default最后一个参数时RenderTargetBitmap,图像按预期呈现.然而,当我选择PixelFormats.Indexed2(或任何的PixelFormats.IndexedX),我的代码似乎退出方法没有例外,该bmp.Render线不会被调用,因此在图像上没有显示Canvas.
如何使用IndexedX像素格式RenderTargetBitmap?或者还有其他方法可以减少图像的内存占用量吗?它只使用三种颜色,所以使用调色板而不是32位RGB似乎是要走的路.
Ian*_*ths 12
你不能.RenderTargetBitmap仅支持Pbgra32像素格式.那是因为WPF的渲染系统完全以每像素32位的速度工作.这是它生成图像的格式,如果你想渲染图像,它也是喜欢图像的格式.(如果您为其提供任何其他格式的位图,则需要先将其转换为每像素32位的表示.)
你打算用这个位图做什么?如果要在WPF应用程序中呈现它,在任何情况下都需要先将其转换为32bpp格式,因此如果您尝试在内部以任何其他格式保存它,则可能会冒更多内存的风险.(你将拥有所谓的内存效率表示和 WPF实际上可以使用的版本.)更不用说在你选择的格式和WPF可以使用的格式之间转换所花费的额外CPU时间.
| 归档时间: |
|
| 查看次数: |
3073 次 |
| 最近记录: |