获取矩形的背景色



我画了一个矩形:

Rectangle rectangle=new Rectangle(10,10,40,40);
g.FillRectangle(new SolidBrush(Color.Red),rectangle);

谁能给我一些建议,当点击矩形时,它是可能得到背景颜色的:

private void Form1_MouseClick(object sender, MouseEventArgs e)
{
            if (rectangle.Contains(e.Location))
            {
                //get the color here that it should be Red
                Console.WriteLine("COLOR IS: " ????);
            }
}

Thanks in advance

看看这个答案。

基本思想是获得点击事件触发的像素的颜色(e.Location),为此您可以使用gdi32.dll的GetPixel方法。

在链接

中找到的稍微修改过的代码版本:
class PixelColor
{
    [DllImport("gdi32")]
    public static extern uint GetPixel(IntPtr hDC, int XPos, int YPos);
    [DllImport("User32.dll", CharSet = CharSet.Auto)]
    public static extern IntPtr GetWindowDC(IntPtr hWnd);
    /// <summary> 
    /// Gets the System.Drawing.Color from under the given position. 
    /// </summary> 
    /// <returns>The color value.</returns> 
    public static Color Get(int x, int y)
    {
        IntPtr dc = GetWindowDC(IntPtr.Zero);
        long color = GetPixel(dc, x, y);
        Color cc = Color.FromArgb((int)color);
        return Color.FromArgb(cc.B, cc.G, cc.R);
    }
}

请注意,在调用该函数之前,您可能必须将X和Y坐标转换为屏幕坐标。

但在你的情况下,真正的答案是:红色。:)

相关内容

  • 没有找到相关文章

最新更新