質問

レンダリングを探しています 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?または、画像のメモリフットプリントを減らす他の方法はありますか? 3色しか使用していないため、32ビットRGBではなくパレットを使用すると、道が進むように思われました。

役に立ちましたか?

解決

できません。 RenderTargetBitmap をサポートするだけです Pbgra32 ピクセル形式。これは、WPFのレンダリングシステムがピクセルあたり32ビットで完全に機能するためです。これは、画像を生成する形式であり、レンダリングする場合に画像を好む形式でもあります。 (他の形式でビットマップを提供する場合、最初にピクセル表現ごとに32ビットに変換する必要があります。)

このビットマップで何をするつもりですか? WPFアプリケーションでレンダリングする場合は、最初に32BPP形式に変換する必要があります。 もっと メモリ他の形式で内部的に保持しようとする場合。 (おそらくメモリ効率の高い表現があります バージョンWPFは実際に動作することができます。)選択した形式とWPFのフォーマットとの間の変換に費やす余分なCPU時間は言うまでもありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top