winforms 如何获得图像的像素数?

sq1bmfud  于 2022-11-17  发布在  其他
关注(0)|答案(1)|浏览(174)
private void pictureBox2_MouseUp(object sender, MouseEventArgs e)
        {
            Bitmap rectImage = cropAtRect((Bitmap)pictureBox2.Image, rect);

            int x, y;

            for (x = rect.X; x < rect.Width; x++)       {
                for (y = rect.Y; y < rect.Height; y++)           {
                    Color pixelColor = rectImage.GetPixel(x, y);
                    pixelsCounter++;
                }
            }

            pictureBox1.Image = rectImage;
        }

我想获取rectImage中的像素数。我可以在pictureBox1中看到rectImage,但变量pixelsCounter在循环后为0。

s71maibg

s71maibg1#

假设您有一个从X坐标10(包括10)到X坐标15(不包括15)的矩形:

xxxxx
012345678901234567890

显然,这个矩形的宽度为5像素,即rect.Width为5。让我们看看您的循环:

for (x = rect.X; x < rect.Width; x++)

这个循环将从X(10)开始,并增加循环计数器,直到它达到Width(5)。
您需要从10循环到15(即从X循环到X + Width)或从0循环到5(即从0循环到Width)。哪一个是正确的取决于您打算如何处理循环索引。
然而,在你的例子中,你并不需要整个循环。正如评论中提到的,像素的数量只是Width * Height

相关问题