Ich suche eine DrawingVisual
(visuell im Beispiel) zu einer Bitmap mit RenderTargetBitmap
mit dem Blick machen auf ein Canvas
wie unten dieses Bitmap als Hintergrund festlegen:Wie PixelFormats.IndexedX mit RenderTargetBitmap verwenden?
var bmp = new RenderTargetBitmap(2000, 50, 120, 96, PixelFormats.Indexed2);
bmp.Render(visual);
var brush = new ImageBrush(bmp) { Stretch = Stretch.Fill };
Canvas.Background = brush;
Wenn PixelFormats.Default
als das letzte Argument zu RenderTargetBitmap
, das Bild rendert wie erwartet. Wenn ich jedoch PixelFormats.Indexed2
(oder einen der PixelFormats.IndexedX
) wähle, scheint mein Code die Methode ohne eine Ausnahme zu beenden, die bmp.Render
Zeile wird nie aufgerufen und daher wird das Bild nicht auf der Canvas
angezeigt.
Wie verwendet man die IndexedX
Pixelformate mit RenderTargetBitmap
? Oder gibt es andere Möglichkeiten, den Speicherbedarf des Bildes zu reduzieren? Es verwendet nur drei Farben, so dass die Verwendung einer Palette anstelle von 32-Bit-RGB der Weg zu gehen schien.
Danke für die Info Ian, mir war nicht klar, dass das Bild irgendwann im Render-Prozess als Pbgra32 gespeichert werden musste. Sieht so aus, als müsste ich mit dem zusätzlichen Speicherverbrauch leben. –
Interessanterweise läuft die Bitmap in einem Scrollviewer, um ein scrollbares Diagramm zur Verfügung zu stellen. Ich war nicht in der Lage, die gewünschte Leistung aus Vektorzeichnungen zu erhalten, also habe ich auf eine Bitmap zurückgegriffen. –
dann warum sagt die Fehlermeldung nicht so! –