我画了一个矩形:
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: " ????);
}
}
提前致谢
答案 0 :(得分:1)
看看这个answer。
基本思路是获取点击事件被触发的像素的颜色(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坐标转换为屏幕坐标。
但在你的情况下,真正的答案是:红色。 :)