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