我正在尝试制作一个Windows窗体应用程序。在这个应用程序中有一个图片框,用户可以通过点击图片中的颜色来选择颜色。
所以我用谷歌搜索并试了一些东西,但它没有正常工作,
所以我有这段代码来检查用户在图片框中点击的位置并设置r
,g
和b
:
private void pictureBox1_Click(object sender, EventArgs e)
{
x = MousePosition.X;
y = MousePosition.Y;
MessageBox.Show(string.Format("X: {0} Y: {1}", x, y));
colorAtPoint = Properties.Resources.kleuren_rondje.GetPixel(x, y);
r = colorAtPoint.R;
g = colorAtPoint.G;
b = colorAtPoint.B;
}
我有这个检查颜色
private void ColorChecker()
{
Graphics e = pictureBox2.CreateGraphics();
SolidBrush myBrush = new SolidBrush(Color.FromArgb(r, g, b));
e.FillRectangle(myBrush, 1, 1, 100, 100);
}
这用于检查是否找到颜色并添加到其他图片框中(用于测试)
private void button1_Click(object sender, EventArgs e)
{
ColorChecker();
}
我使用了互联网上的方法,但r
,g
和b
仍然提供255
。
有人知道为什么或可能通过其他方式检查点击点上的图片中的r
,g
,b
。
顺便说一句,X
和Y
会给出一些点位置
此致
答案 0 :(得分:1)
MousePosition返回屏幕坐标。您需要 CLIENT coords。
转换它:
Point pt = pictureBox1.PointToClient(MousePosition);
x = pt.X;
y = pt.Y;
...或使用MouseDown()
及其相应的e.X
和e.Y
:
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
x = e.X;
y = e.Y;
MessageBox.Show(string.Format("X: {0} Y: {1}", x, y));
// ...
}