2015-02-07 2 views
-1

Как я могу получить цвет пикселя в месте расположения курсора? Я знаю, как получить положение мыши с помощью MousePosition, но я не могу понять, как получить цвет пикселя в этом месте. Я пишу код ставить у меня нет результата при запускеположение мыши и указать цвет позиции

private void pictureBox1_MouseClick(object sender, MouseEventArgs e) 
    { 


        s= pictureBox1.PointToClient(Cursor.Position);   

        bitmap.SetPixel(s.X/40, s.Y/40, Color.Red); 

        } 
+1

Ну , конечно, нет, вы не пишете код. Используйте событие MouseMove и bitmap.GetPixel() –

ответ

0

Это проще использовать e.Location точку в параметре Mouseclick события:

Color c = ((Bitmap)pictureBox1.Image).GetPixel(e.X, e.Y); 

Это предполагает, что на самом деле растровое изображение в PicturBoxImage, не окрашенное поверх Control ..

Убедитесь, что мероприятие действительно подключено!

Чтобы установить щелкнул пиксель, скажем красный, вы бы получить Bitmap из ПБ-х Image и установить пикселы, затем переместите Bitmap назад в ::

Bitmap bmp = (Bitmap)pictureBox1.Image; 
bmp.SetPixel(e.X, e.Y, Color.Red); 
pictureBox1.Image = bmp; 

также в MouseClick случае.

Если вы хотите получить больше знак, вы должны использовать Graphics методы, может быть, как это:

using (Graphics G = Graphics.FromImage(pictureBox1.Image)) 
{ 
    G.DrawEllipse(Pens.Red, e.X - 3, e.Y - 3, 6, 6); 
} 

Update: Чтобы объединить получение и установку вы можете написать:

Bitmap bmp = (Bitmap)pictureBox1.Image; 
Color target = Color.FromArgb(255, 255, 255, 255); 
Color c == bmp .GetPixel(e.X, e.Y); 
if (c == target) 
    { 
     bmp.SetPixel(e.X, e.Y, Color.Red); 
     pictureBox1.Image = bmp; 
    } 
else MessageBox.Show("Click only on white spots! You have hit " + c.ToString(), 
        "Wrong spot! "); 
+0

извините, но при использовании этого цвета c = ((Bitmap) pictureBox1.Image) .GetPixel (e.X, e.Y); где я помещаю цвет для ex: красный или любой цвет, я использую SetPixel, чтобы дать пиксель цвет – lena

+0

Ну, вы можете использовать SetPixel так же здесь: '((Растровое изображение) pictureBox1.Image) .SetPixel (eX, eY, цвет. Красный); '- Но вы уверены, что знаете (или сказали нам), чего вы хотите достичь? Зачем читать цвет, если затем установить его на красный? – TaW

+0

Я делаю это, но при запуске и нажатии ничего не происходит – lena

Смежные вопросы