- PR -

C# Bitmapクラスの"行のメモリ サイズ"とは?

1
投稿者投稿内容
ひろし
ぬし
会議室デビュー日: 2002/09/16
投稿数: 390
お住まい・勤務地: 兵庫県
投稿日時: 2005-04-17 18:49
説明を読んでもBitmpaクラスのコンストラクタの第3パラメータである"stride"の意味するところが良く分かりません。ストリームは理解できますが、"行"が何を意味するかが分からないので、"行のメモリ サイズ"が何を意味するのかも理解できません。
宜しくお願いします。

Bitmapクラスのコンストラクタの説明より(MSDNライブラリ)

[C#]
public Bitmap(
int width,
int height,
int stride,
PixelFormat format,
IntPtr scan0
);

パラメータ
width
新しい Bitmap オブジェクトの幅 (ピクセル単位)。
height
新しい Bitmap オブジェクトの高さ (ピクセル単位)。
stride
ピクセル データのストリームの行のメモリ サイズ。
format
新しい Bitmap オブジェクトの PixelFormat 列挙体。
scan0
ピクセル データのストリームのアドレス。

rvmx
大ベテラン
会議室デビュー日: 2002/09/26
投稿数: 184
お住まい・勤務地: 愛媛県
投稿日時: 2005-04-17 20:28
今日は

Bitmapは左上より右端へ、その後一段下がり左より右端への繰り返しでメモリーに格納されています。
strideはその横1行に要するバイト数です。PixelFormatのバイト数に横のピクセル数をかけてオフセットを
追加したものです。
ひろし
ぬし
会議室デビュー日: 2002/09/16
投稿数: 390
お住まい・勤務地: 兵庫県
投稿日時: 2005-04-17 21:40
ありがとうございます。

つまりbmpの場合
640x480 8bitGray ---> 640
640x480 24bitRGB ---> 1920
でOKなのですね。
rvmx
大ベテラン
会議室デビュー日: 2002/09/26
投稿数: 184
お住まい・勤務地: 愛媛県
投稿日時: 2005-04-18 05:47
今日は

640x480 8bitGray
640x480 24bitRGB
共32BitPCではOffsetが0の為会っていると思います。
しかし、641x480 8bitGrayでは641でなく644と成ります(offset=3)
1

スキルアップ/キャリアアップ(JOB@IT)