C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■100297 / 3階層)  カラービットマップの描画について
□投稿者/ KOZ (293回)-(2022/07/15(Fri) 11:42:15)
No100284 (まさお さん) に返信
> プログラムを編集して試してみましたがうまくいきません。
> 下記プログラムでImageWidth が(4の倍数)か(4の倍数-1)の時はうまく動くのですがそれ以外の時にうまく動きません。

「うまく動きません」の内容が変わってます。
2箇所修正したら動きました。dataWidth って不要なのでは?

protected override void OnPaint(PaintEventArgs e) {
    base.OnPaint(e);

    int left = 10;

    for (int i = 0; i < 4; i++) {
        int ImageWidth = 100 + i;
        const int ImageHeight = 50;

        int stride = (ImageWidth * 24 + 31) / 32 * 4;
        int dataWidth = (ImageWidth + (stride / 3 - ImageWidth)) * 3;

        //var scan0 = Enumerable.Repeat<byte>(0x00, (dataWidth) * ImageHeight).ToArray(); ★ここ
        var scan0 = Enumerable.Repeat<byte>(0x00, stride * ImageHeight).ToArray();

        // 青のグラデーションになるようなデータ作成
        byte c;
        for (int y = 0; y < ImageHeight; y++) {
            c = 0;
            for (int x = 0; x < ImageWidth * 3; x++) {
                if (x % 3 == 0) {
                    //int index = y * (dataWidth) + x;  ★ここ
                    int index = y * (stride) + x;
                    scan0[index] = c;
                    c += 2;
                }
            }
        }

        using (Bitmap bitmap = new Bitmap(ImageWidth, ImageHeight, PixelFormat.Format24bppRgb)) {
            BitmapData bitmapData = bitmap.LockBits(
                new Rectangle(0, 0, ImageWidth, ImageHeight),
                ImageLockMode.WriteOnly,
                PixelFormat.Format24bppRgb);
            Marshal.Copy(scan0, 0, bitmapData.Scan0, scan0.Length);
            bitmap.UnlockBits(bitmapData);
            e.Graphics.DrawImage(bitmap, new Point(left, 10));
        }
        left += ImageWidth + 10;
    }
}


編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[2]: カラービットマップの描画について /まさお →Re[4]: カラービットマップの描画について /radian
 
上記関連ツリー

カラービットマップの描画について / まさお (22/07/14(Thu) 14:27) #100272
Re[1]: カラービットマップの描画について / radian (22/07/14(Thu) 15:27) #100273
│└ Re[2]: カラービットマップの描画について / まさお (22/07/15(Fri) 10:28) #100284
│  └ カラービットマップの描画について / KOZ (22/07/15(Fri) 11:42) #100297 ←Now
│    └ Re[4]: カラービットマップの描画について / radian (22/07/15(Fri) 11:46) #100300
│      └ Re[5]: カラービットマップの描画について / KOZ (22/07/15(Fri) 12:26) #100302
│        └ Re[6]: カラービットマップの描画について / radian (22/07/15(Fri) 12:34) #100303
│          └ Re[7]: カラービットマップの描画について / KOZ (22/07/15(Fri) 12:53) #100304
│            └ Re[8]: カラービットマップの描画について / radian (22/07/15(Fri) 13:04) #100305
│              └ Re[9]: カラービットマップの描画について / kiku (22/07/15(Fri) 13:13) #100306
│                └ Re[10]: カラービットマップの描画について / radian (22/07/15(Fri) 13:17) #100307
Re[1]: カラービットマップの描画について / kiku (22/07/14(Thu) 15:37) #100274
  └ Re[2]: カラービットマップの描画について / radian (22/07/15(Fri) 11:13) #100288
    └ Re[3]: カラービットマップの描画について / まさお (22/07/15(Fri) 11:28) #100291
      ├ Re[4]: カラービットマップの描画について / radian (22/07/15(Fri) 11:30) #100292
      └ Re[4]: カラービットマップの描画について / kiku (22/07/15(Fri) 11:38) #100295
        └ Re[5]: カラービットマップの描画について / まさお (22/07/15(Fri) 18:34) #100320 解決済み

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信