我期待呈現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