Как использовать PixelFormats.IndexedX с 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;

При использовании PixelFormats.Default в качестве последнего аргумента для RenderTargetBitmap изображение отображается должным образом. Однако, когда я выбираю PixelFormats.Indexed2 (или любой из PixelFormats.IndexedX ), мой код, кажется, выходит из метода без исключения, bmp.Render ] никогда не вызывается, и поэтому изображение не отображается на холсте .

Как использовать форматы пикселей IndexedX с RenderTargetBitmap ? Или есть другие способы уменьшить объем памяти, занимаемый изображением? Он использует только три цвета, поэтому использование палитры, а не 32-битного RGB, казалось, подходило.

5
задан Palec 12 September 2016 в 10:23
поделиться