从图片框中的图像获取像素的颜色不起作用

时间:2015-06-04 14:26:38

标签: c# colors picturebox

我正在尝试制作一个Windows窗体应用程序。在这个应用程序中有一个图片框,用户可以通过点击图片中的颜色来选择颜色。

所以我用谷歌搜索并试了一些东西,但它没有正常工作,

所以我有这段代码来检查用户在图片框中点击的位置并设置rgb

    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();            
    }

我使用了互联网上的方法,但rgb仍然提供255。 有人知道为什么或可能通过其他方式检查点击点上的图片中的rgb

顺便说一句,XY会给出一些点位置

此致

1 个答案:

答案 0 :(得分:1)

MousePosition返回屏幕坐标。您需要 CLIENT coords。

转换它:

        Point pt = pictureBox1.PointToClient(MousePosition);
        x = pt.X;
        y = pt.Y;

...或使用MouseDown()及其相应的e.Xe.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));

        // ...

    }