在FillRectangles之后获取Rectangle的颜色

问题描述 投票:0回答:4

如何在创建之后获得Rectangle的颜色?

我正在使用此代码来创建它们:

SolidBrush sb = new SolidBrush(Color.Red);
Graphics g = panel1.CreateGraphics();
Rectangle[] rects = { new Rectangle(0, 0, 15, 15), new Rectangle(16, 16, 15, 15), new Rectangle(16, 0, 15, 15), new Rectangle(0, 16, 15, 15) };
g.FillRectangles(sb,rects);

现在我想获得第三个矩形rects[2] =的颜色....

有可能得到这个吗?它应该返回Color.Red

c# .net rectangles getcolor
4个回答
0
投票

如果存储图像,则只存储结果(即像素网格)。没有关于如何创建此图像的信息。

例如。仅基于位图图像,您无法区分两个相邻的正方形(new Rectangle(0, 0, 15, 15), new Rectangle(15, 0, 15, 15)和宽度为两倍的单个矩形(new Rectangle(0, 0, 30, 15))。

所以对你的问题的简短回答是否定的,你不能这样做。

除非你单独存储你的信息(你绘制的矩形),然后使用它来找到图像上的适当像素(这只适用于简单的情况 - 如果你重叠早期的矩形,那将是不可能的)

但是如果你打算存储矩形信息,你也可以存储它的颜色,然后你就不需要对图像进行逆向工程了。所以答案仍然是你无法单独根据图像来做到这一点。


3
投票

您可以找到矩形的中心像素的位置,然后您可以使用GetPixel方法获取有关诸如颜色的信息。

   Color pixelColor = myBitmap.GetPixel(50, 50);

1
投票

FillRectangles使用您传递的画笔(颜色)绘制矩形。从任何矩形到任何颜色都没有参考。它只是对Graphics对象执行绘图命令。

矩形没有颜色。所以,不,你不能。如果您解释为什么需要它,可能会有其他解决方案来获得所需的结果。


0
投票

你可以写一个新的类,例如:

class ColorRectangles
{
    public Color color;
    public Rectangle[] rects;

    public ColorRectangle(Rectangle[] rects, Color color) : base(x, y, width, height)
    {
        this.color = color
        this.rects = rects;
    }
}

然后使用g.FillRectangles(new SolidBrush(Rectangle.color), Rectangle.rects);设置矩形颜色

© www.soinside.com 2019 - 2024. All rights reserved.