C#_ LockBits と UnlockBits メモ 02

メモ 01 の関数やプロパティ調べ。

LockBits ( Rectangle, ImageLockMode, PixelFormat )

Rectangle
ロックする部分を指定する Rectangle 構造体。

ImageLockMode
アクセスレベル ( 読み取り / 書き込み ) を指定する ImageLockMode 列挙体。
ex ) ReadOnly:読み取りのみ。ReadWrite:読み取りと書き込み。

PixelFormat
データ形式を指定する PixelFormat 列挙体。

 

 

BitmapData

BitmapData クラスは、ビットマップイメージの属性を指定する。
Bitmap を操作する為のクラス

 

BitmapData.Stride

Bitmap のストライド幅 ( スキャン幅 ) を取得または設定。
1 ラインあたりのバイト数取得できる。

1 行のピクセル ( 走査線 ) の幅で、4 バイトの境界に切り上げられる。
負の場合はボトムアップ。正の場合はトップダウン

ビットマップは 2 つの異なる方向でメモリ内に配置。

ボトムアップ
画像データを下の行から上に向かって 1 行ずつ順番にファイルに格納する保存方法。
bmp 形式ではこちらが標準

トップダウン
画像データを上の行から下に向かって 〃。

 

BitmapData.Scan0

ビットマップ内の最初ピクセルデータのアドレス

ビットマップ内の最初のスキャンラインと考えることもできる。
( ピクセルデータを格納するバイトの配列へのポインタ )

 

 

System.Runtime.InteropServices.Marshal.Copy

マネージド配列 から アンマネージドメモリポインタ、
または
アンマネージドメモリポインタ から マネージド配列にデータをコピーする。
オーバーロード多数。

 

ex )
Marshal.Copy ( IntPtr, Byte[ ], Int32, Int32 )
アンマネージドメモリポインタから、
8 ビット符号なし整数のマネージド配列にデータをコピー。

第 1 引数:コピー
第 2 引数:コピー先の配列
第 3 引数:コピーの開始位置。0 から始まるインデックス。
第 4 引数:コピーする長さ

 

 

 

こちらから。
https://dobon.net/vb/dotnet/graphics/drawnegativeimage.html
Bitmap.LockBits Method (System.Drawing) | Microsoft Docs
Image.GetPixelFormatSize(PixelFormat) Method (System.Drawing) | Microsoft Docs
BitmapData Class (System.Drawing.Imaging) | Microsoft Docs
http://d.hatena.ne.jp/ijupiter/20090213/p1#c1234543817
http://hp.vector.co.jp/authors/VA033743/swellhelp/func_option_bmp.html
https://msdn.microsoft.com/ja-jp/library/cc370952.aspx
http://d.hatena.ne.jp/Csh/20100317/1268832843
https://qiita.com/Nuits/items/2c1dfa00db3aef39d3ae
Marshal.Copy Method (System.Runtime.InteropServices) | Microsoft Docs

以上。