PictureBox Рисованные цвета изображения для массива - PullRequest
1 голос
/ 27 декабря 2011

Я получил изображение 400x300, которое получило событие «mousedown», в котором вместо щелчка мышью помещаются несколько красных эллипсов. Проблема, которую я получил сейчас, я хочу получить цвета каждого пикселя в массив. Я получил только 3 цвета: черный (0,0,0 в RGB), красный (255,0,0) и какое-то время (255,255,255). Вопрос в том, как я могу пройти через весь picturebox и взять значения цветов? Там нет "getPixel" я мог бы использовать. Я попытался передать изображение pictureBox в растровое изображение

Bitmap zdjecie_box = new Bitmap(pictureBox1.Image)

но оно говорит, что изображение должным образом пусто (null), поэтому я предполагаю, что нарисованное изображение хранится не в .image, а в другом месте. Я хотел этого, потому что тогда я бы просто использовал zdjecie_box.GetPixel(i, j).R; и сохранил его в массив.

Есть идеи, как это сделать?

1 Ответ

1 голос
/ 27 декабря 2011

Если вы определите свое собственное изображение и зададите его для события рисования, вы легко получите к нему доступ.например,

 Bitmap _b;
 private void Form1_Paint(object sender, PaintEventArgs e)
 {
    _b = new Bitmap(pictureBox1.Width, pictureBox1.Height);
    Graphics g = Graphics.FromImage(_b);
    g.DrawEllipse(Pens.Black,new Rectangle(0,0,25,25));
    pictureBox1.Image = _b;
 }
 ...
 private void ParseImage()
 {
    for (int y = 0; y < _b.Height; y++)
    {
       for (int x = 0; x < _b.Width; x++)
       {
          Color c = _b.GetPixel(x, y);
       }
     }
  }
...