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

わんくま同盟

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

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


(過去ログ 151 を表示中)
■88188 / )  画像の描画時に変色を防ぐ方法
□投稿者/ マッチ (1回)-(2018/08/08(Wed) 23:42:06)

分類:[C#] 

C#を使ってテンプレートマッチングの練習をしております。
2つの同じ画像を比較しようとして下のようなソースを書いたのですが、
原型の色と異なるようでfalseが返ってきます。
おそらくDrawImageメソッドを使うことによって、元の画像から変色してしまっているからだと思います。
原形のまま変色せずに他のBitmapへコピーすることはできるのでしょうか。

         public void CheckImage()
         {
            Bitmap bitmapIcon = SystemIcons.Hand.ToBitmap();
            Bitmap bitmapBig = new Bitmap(bitmapIcon.Width * 2, bitmapIcon.Height * 2);
            Graphics graphics = Graphics.FromImage(bitmapBig);
            graphics.DrawImage(bitmapIcon, 0,0);
            MessageBox.Show(IsEqualBitmap(bitmapBig, SystemIcons.Hand.ToBitmap(), 0,0).ToString());
        }

        public bool IsEqualBitmap(Bitmap bitmapTarget, Bitmap bitmapImage, int nTargetX, int nTargetY)
        {
            if((nTargetX + bitmapTarget.Width) > bitmapImage.Width)
            {
                return false;
            }

            if((nTargetY + bitmapTarget.Height) > bitmapImage.Height)
            {
                return false;
            }

            for (int nY = 0; nY < bitmapTarget.Height; nY++)
            {
                for (int nX = 0; nX < bitmapTarget.Width; nX++)
                {
                    Color colorTarget = bitmapTarget.GetPixel(nX, nY);
                    Color colorImage = bitmapImage.GetPixel(nTargetX + nX, nTargetY + nY);

                    if (colorTarget != colorImage)
                    {
                        return false;
                    }
                }
            }

            return true;
        }

返信 編集キー/


管理者用

- Child Tree -