2015-06-04 1 views
0

Я пытаюсь сделать приложение для окон. В этом приложении есть окно с изображением, и пользователь может выбрать цвет, щелкнув по цвету внутри изображения.Получение цвета пикселя из изображения в картинке не работает

Так что я гугле и попробовал некоторые вещи, но он не работает правильно,

Так у меня есть этот код для проверки, на котором указывают пользователь нажимает в окне изображения и установив 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); 
    } 

И это для проверки ING, если цвет находится ан добавить в другой коробке изображения (для тестирования)

 private void button1_Click(object sender, EventArgs e) 
    { 
     ColorChecker();    
    } 

Я использовал методы из Интернета, но r, g и b все еще дает 255. Кто-нибудь знает, почему или, возможно, другой способ проверить r, g, b с картинки на щелчок.

BTW, то X и Y дает некоторые места

точки

С уважением

+0

Что такое 'klueren_rondje' и как местоположение мыши относятся к нему? Похоже, что это ресурс изображения, что означает, что координаты мыши «X» и «Y», вероятно, не связаны с точкой на изображении. – Sayse

+0

kleuren_rondje - это имя файла изображения, x и y point arent правильно. Но не можете найти другой способ измерения в точке ведьмы, когда пользователь нажимает на окно изображения –

+0

и как отношение мыши к нему связано? Похоже, что это ресурс изображения, что означает, что координаты мыши X и Y, вероятно, не связаны с точкой на изображении. – Sayse

ответ

1

MousePosition возвращает экран COORDS. Вам нужно 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)); 

     // ... 

    } 
+0

Оба не работают :( Это wil получит некоторый цвет r, g, b, но не правильный цвет, если щелкнуть на картинке –

+0

В каком режиме у вас есть свойство 'SizeMode' вашего PictureBox? Если это не' AutoSize' или 'Normal', тогда координаты щелчка мыши не будут отображаться непосредственно на изображение ... –

+0

У меня это на stretchImg, все размеры modus дают тот же результат, некоторый цвет, но не правильный –