• ベストアンサー

Graphics型からのピクセル操作(C#)

C#についての質問です。 Graphicsでピクチャーボックスに線を描画した後に、ピクチャーボックスのピクセル操作をしたいのですが、どうすればよいのか分かりません。 一度GraphicsからBitmapに変換しないといけないと思うのですが、どうすればよいのでしょうか??

質問者が選んだベストアンサー

  • ベストアンサー
  • axsies
  • ベストアンサー率64% (38/59)
回答No.1

.NETのGraphicsだけでは実現できないので、Win32APIのGDIを直接使うことになります。 GDIを介したやりとりには、デバイスコンテキストというものが必要になりますが、 .NETのGraphics型のGetHdcメソッドで取得できます。 一番簡単なのは、GDIのSetPixel関数、GetPixel関数を使うことですが、 きわめて低速なので通常はDIBセクションというものを使用します。 DIBセクションは、CreateDIBSection関数で作成できます。 CreateDIBSection関数は、作成時にビットマップのハンドルとともに、 そのビットマップ領域へのメモリポインタを取得できるので、 ピクセルの直接操作も高速に処理できます。 かなり大ざっぱな処理の流れとしては CreateDIBSection関数で、ビットマップを作成。(バックバッファ) ↓ 作成したビットマップに対して、線を描画したり、ピクセル操作を行って画面を完成させる。 ↓ BitBlt関数を使って、バックバッファからピクチャーボックスへ転送することで画面が表示される。 といった感じです。

dontlookback
質問者

お礼

どうもありがとうございます! 調べながら、何とか教えてくださった方法でできました! 本当に助かりました!

すると、全ての回答が全文表示されます。

関連するQ&A