Как изменить цвет пикселей на событие щелчка мыши? - PullRequest
1 голос
/ 17 июня 2011

Если во время выполнения щелкнуть мышью в точке на графическом блоке (т. Е. При загрузке изображения), она должна изменить цвет пикселей в этом месте. У меня есть этот фрагмент кода, показывающий ошибку.

    private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
    {
        Bitmap bm=new Bitmap(1,1);
        bm.SetPixel(0,0,Color.Red);
        e.Graphics.DrawImageUnscaled(bm,e.X,e.Y);
    }

ошибка «System.Windows.Forms.MouseEventArgs» не содержит определения для «Графика», и не найдено никакого метода расширения «Графика», принимающего первый аргумент типа «System.Windows.Forms.MouseEventArgs» ( вам не хватает директивы using или ссылки на сборку?)

, хотя я включил system.drawing, он показывает эту ошибку.

1 Ответ

3 голосов
/ 17 июня 2011

Попробуйте изменить изображение в картинке, а не перерисовывать его, поскольку MouseEventArgs не содержит никакого свойства Graphics.

Пример:

int radius = 3; //Set the number of pixel you wan to use here
 //Calculate the numbers based on radius
int x0 = Math.Max(e.X-(radius/2),0),
    y0 = Math.Max(e.Y-(radius/2),0),
    x1 = Math.Min(e.X+(radius/2),pictureBox1.Width),
    y1 = Math.Min(e.Y+(radius/2),pictureBox1.Height);
Bitmap bm = pictureBox1.Image as BitMap; //Get the bitmap (assuming it is stored that way)
for (int ix = x0; ix < x1; ix++)
{
   for (int iy = y0; iy < y1; iy++)
   {
    bm.SetPixel(ix,iy, Color.Read); //Change the pixel color, maybe should be relative to bitmap
   }
}
pictureBox1.Refresh(); //Force refresh

РЕДАКТИРОВАТЬ : допускается выбор нескольких пикселей в соответствии с радиусом заливки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...