が可能と変更コンポーネントのラインナップBitmapSourceメモリー'安全でない'lyから別のスレッド
-
29-09-2019 - |
質問
私はいくつかの画像処理、コンポーネントのラインナップ。しかし、皆さを変更するピクセルのBitmapSourceメモリーに行います。
私は現在の管理これを用いた安全でないコードに対する昔ながらのシステム。画します。ビットマップでの作業、処理(ロック作業領域と、怒のピクセル)を作成"にチェックを入れます。のアプローチはこのポスト: http://blogs.msdn.com/b/ericgu/archive/2007/06/20/lost-column-2-unsafe-image-processing.aspx
この作業コンポーネントのラインナップ私はその作成コンポーネントのラインナップBitmapSourceこのアプローチ:
BitmapSource destination;
IntPtr hBitmap = bitmap.GetHbitmap();
BitmapSizeOptions sizeOptions = BitmapSizeOptions.FromEmptyOptions();
destination = Imaging.CreateBitmapSourceFromHBitmap(hBitmap, IntPtr.Zero, Int32Rect.Empty, sizeOptions);
destination.Freeze();
return destination;
しかし、多くのコピーメモリといったあと、怒基になるビットのBitmapSourceのようにEricGu示すビットマップ例です。可能ですか?
私はこPixelShadersだけでなく、ここでの学習を伴う複数のスレッドである対応を編集する時はビットマップでは、安全でないモード)になります。
かまいません。
解決
チェックしてみてくださいねしてく分かっています。
第れでも知ってい冷凍ビットマップをセットのカバーを目標としてい主なねじになります。ことになる番良い準備をして臨みたいです。
私は一度削減させようとしてきましたコピーによる派生する新しい実装からBitmapSource、オーバーライドの仮想関数がコピーデータのビットマップ.しか生産大量のメモリ解放されます。いねます。
きものを作成しBitmapSourceからバイト配列(落のオーバーヘッドのGDIビットマップ. msdn docs
てすと WriteableBitmap?このコンポーネントのラインナップチームの応答に関する苦情に対してはcopyingをご覧ください。
編集:MSDNは明示的に(WritableBitmap.BackBuffer文書)で使用できるから背景のスレッド:
とすることができますバックバッファへのポインタ 外付け部品やその他のスレッド 処理を行なう場合は、 必ずご自身のスレッド 調しています。特に、必要 このUIのスレッドを指定し 変更による地域の呼び出し AddDirtyRect法のUI スレッドのロックを解除バッファを呼び出し ロック解除の方法です。
ができるようになってしまいますのUIのスレッド詞、ロスエロエスデイキケ記のポインタできるよう労働者のスレッドのピクセルです。