私は以下のようにCanvas
の背景として、このビットマップを設定するには、ビューとRenderTargetBitmap
を使用してビットマップにDrawingVisual
(例では、視覚)をレンダリングするために探しています:最後の引数としてPixelFormats.Default
を使用する場合RenderTargetBitmapでPixelFormats.IndexedXを使用するには?
var bmp = new RenderTargetBitmap(2000, 50, 120, 96, PixelFormats.Indexed2);
bmp.Render(visual);
var brush = new ImageBrush(bmp) { Stretch = Stretch.Fill };
Canvas.Background = brush;
RenderTargetBitmap
に設定すると、イメージは期待どおりレンダリングされます。しかし、PixelFormats.Indexed2
(またはPixelFormats.IndexedX
のいずれか)を選択した場合、私のコードは例外なくメソッドを終了するようですが、bmp.Render
行は呼び出されないため、画像はCanvas
に表示されません。
ピクセル形式IndexedX
の使用方法RenderTargetBitmap
?または、イメージのメモリフットプリントを減らす他の方法はありますか?それは3色しか使用しないので、32ビットRGBではなくパレットを使用することがやりがいのようでした。
Ianの情報をありがとう、私はそのイメージがレンダリングプロセスのある時点でPbgra32としてメモリに保持されていなければならないことを認識しませんでした。私は余分なメモリ使用量で生きなければならないように見えます。 –
興味深いことに、ビットマップはスクロール可能なチャートを提供するためにスクロールビューワに入っています。私はベクトル描画から欲しいパフォーマンスを得ることができなかったので、ビットマップに頼った。 –
それから、なぜエラーメッセージはそう言っていないのですか? –