5

画像に対して複数の操作を実行する必要があります。たとえば、画像のサイズを変更し、アスペクト比を維持するために画像をパディングし(そして背景色を描画し)、条件付きで透かしをスタンプする必要があります。

私は現在BitmapFrame、関連するメソッド間で渡すタイプとして使用しています。

画像の増分更新を実行するために使用する必要がある別のタイプを誰かが推奨できますか?

どのタイプを使用すればよいかわかりませんが、さまざまな画像のコンポジションを作成できる可能性があります。

4

2 に答える 2

9

WriteableBitmapイメージを段階的に更新する場合に適しています。とは両方BitmapFrameからWriteableBitmap継承しBitmapSourceWriteableBitmap任意のを使用してインスタンス化できますBitmapSource

また、ビットマップ操作のための効率的な拡張メソッドを豊富に提供するWriteableBitmapExライブラリもご覧ください。WriteableBitmapこのライブラリは、WPFアプリケーションだけでなく、Silverlight、WP7、Metroにも適用できます。

于 2012-06-14T11:46:34.830 に答える
6

試すWriteableBitmap

http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.writeablebitmap.aspx

WriteableBitmapクラスを使用して、フレームごとにビットマップを更新およびレンダリングします。これは、フラクタル画像などのアルゴリズムコンテンツの生成や、音楽ビジュアライザーなどのデータ視覚化に役立ちます。

更新をより細かく制御し、バックバッファーへのマルチスレッドアクセスを行うには、次のワークフローを使用します。

1. Lockメソッドを呼び出して、更新用にバックバッファーを予約します。

2. BackBufferプロパティにアクセスして、バックバッファへのポインタを取得します。

3.変更をバックバッファに書き込みます。WriteableBitmapがロックされている場合、他のスレッドがバックバッファに変更を書き込む可能性があります。

4. AddDirtyRectメソッドを呼び出して、変更された領域を示します。

5. Unlockメソッドを呼び出して、バックバッファーを解放し、画面に表示できるようにします。

更新がレンダリングスレッドに送信されると、レンダリングスレッドは変更された長方形をバックバッファーからフロントバッファーにコピーします。レンダリングシステムはこの交換を制御して、デッドロックや「ティアリング」などのアーティファクトの再描画を回避します。

于 2012-06-14T11:39:29.443 に答える