我期待呈现DrawingVisual
(在示例性视觉)使用RenderTargetBitmap
与视图的位图来设置该位图作为背景的Canvas
如下:如何将PixelFormats.IndexedX与RenderTargetBitmap一起使用?
var bmp = new RenderTargetBitmap(2000, 50, 120, 96, PixelFormats.Indexed2);
bmp.Render(visual);
var brush = new ImageBrush(bmp) { Stretch = Stretch.Fill };
Canvas.Background = brush;
当使用PixelFormats.Default
作为最后一个参数到RenderTargetBitmap
,图像按预期呈现。然而,当我选择PixelFormats.Indexed2
(或任何PixelFormats.IndexedX
),我的代码似乎退出该方法没有例外,bmp.Render
行不会被调用,因此图像不显示在Canvas
。
如何在RenderTargetBitmap
上使用IndexedX
像素格式?还是有其他方法可以减少图像的内存占用量?它只使用三种颜色,因此使用调色板而不是32位RGB似乎是一种方法。
感谢您的信息伊恩,我没有意识到这个图像必须在渲染过程中的某个点在内存中保存为Pbgra32。看起来我将不得不忍受额外的内存使用。 – 2010-12-07 00:13:01