Domanda

Cerco di rendere un DrawingVisual (visiva nell'esempio) per una bitmap utilizzando RenderTargetBitmap con la vista per impostare questo bitmap come sfondo ad una Canvas come di seguito:

var bmp = new RenderTargetBitmap(2000, 50, 120, 96, PixelFormats.Indexed2);
bmp.Render(visual);
var brush = new ImageBrush(bmp) { Stretch = Stretch.Fill };
Canvas.Background = brush;

Quando si utilizza PixelFormats.Default come ultimo argomento a RenderTargetBitmap, l'immagine rende come previsto. Tuttavia, quando scelgo PixelFormats.Indexed2 (o una qualsiasi delle PixelFormats.IndexedX), il mio codice sembra uscire dal metodo senza eccezione, la linea bmp.Render non viene mai chiamato e, quindi, l'immagine non viene visualizzata sul Canvas.

Come utilizzare i formati IndexedX pixel con RenderTargetBitmap? O ci sono altri modi per ridurre l'occupazione di memoria delle immagini? Si utilizza solo tre colori, in modo da utilizzare una tavolozza piuttosto che a 32 bit RGB sembrava la strada da percorrere.

È stato utile?

Soluzione

Non è possibile. RenderTargetBitmap supporta solo il formato Pbgra32 pixel. Questo perché il sistema di rendering di WPF funziona interamente a 32 bit per pixel. Questo è il formato in cui si genera immagini, ed è anche il formato in cui si preferisce immagini di essere in se si vuole renderli. (Se si fornisce con una bitmap in qualsiasi altro formato, sarà necessario convertirlo in un 32 bit per pixel rappresentazione prima.)

Che cosa hai intenzione di fare con questo bitmap? Se si desidera eseguire il rendering in un'applicazione WPF, sarà bisogno di essere convertito in un formato 32bpp prima, in ogni caso, così si rischia di utilizzare più di memoria se si tenta di tenere internamente in qualsiasi altra formato. (Avrai la tua rappresentazione presumibilmente memoria-efficiente e la versione del WPF effettivamente in grado di lavorare.) Per non parlare del tempo di CPU in più speso la conversione tra il formato scelto e di un formato WPF può lavorare con.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top