0

WPF と Windows ストア アプリで画像の色を編集するには、画像のピクセルを読み取って編集し、新しい BitmapSource または WriteableBitmap に書き込むことができることを知っています。この手法が常に最善であるとは思えません。画像の色を編集するには、他にどのようなオプションが必要ですか?たとえば、明るさやガンマを変更するにはどうすればよいでしょうか?

4

1 に答える 1

1

基礎となるビットマップ バッファにアクセスして、ピクセルを効率的に操作できます。WriteableBitmapWPF では、次のクラスを使用できます。

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

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

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

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

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

  5. Unlock メソッドを呼び出して、バック バッファーを解放し、画面への表示を許可します。

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

WriteableBitmapWindows ストア アプリでは、次のクラスを使用できます。

PixelBufferに直接書き込むことはできませんが、言語固有の手法を使用してバッファーにアクセスし、その内容を変更できます。

  • C# または Microsoft Visual Basic からピクセル コンテンツにアクセスするには、AsStream拡張メソッドを使用して、基になるバッファーにストリームとしてアクセスできます。

  • C++ からピクセル コンテンツにアクセスするには、IBufferByteAccessタイプ (Robuffer.h で定義) を照会し、そのBufferプロパティに直接アクセスします。

于 2013-01-14T10:00:00.560 に答える