Я хочу визуализировать 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, казалось, подходило.