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

わんくま同盟

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

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


(過去ログ 72 を表示中)
■42269 / )  Re[3]: 自分の画面にGetPixcel()とSetPixel()
□投稿者/ 倉田 有大 (738回)-(2009/10/11(Sun) 08:45:28)
にゅー

ごそごそと自分のソースあさる。

            BitmapData bmData = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
            byte[] srcBmData = new Byte[bmData.Height * bmData.Stride];
            System.IntPtr Scan0 = bmData.Scan0;
            int stride = bmData.Stride; 
            unsafe
            {
                byte* p = (byte*)(void*)Scan0;
                int nOffset = stride - bmData.Width * 3;

                for (int y = 0; y < bmData.Height; ++y)
                {
                    for (int x = 0; x < bmData.Width; ++x)
                    {
  p[0] = p[1] = p[2] = (byte)(.299 * p[2]
                            + .587 * p[1]
                            + .114 * p[0]);

                        p += 3;
                    }
                    p += nOffset;
                }

            }
            bitmap.UnlockBits(bmData);

グレイスケール変換の例

返信 編集キー/


管理者用

- Child Tree -