загрузка изображения на панель - PullRequest
0 голосов
/ 29 ноября 2011

Сначала я загружаю изображение в картинку. Затем я измеряю области в нем и создаю новую картину. Теперь я хочу загрузить изображение в панель и нарисовать линию мышью. Я добавил в свою форму:

private Image imag;

Я также добавил в свой проект:

private void drawP_Paint(object sender, PaintEventArgs e)
{
    Graphics g = drawP.CreateGraphics(); 
    g.DrawImage(imag, new Point(0,0));
}

Я установил изображение в функции:

imag = (Image)bm;     
// or
imag = picturebox1.Image; // the made picture   
drawP.Invalidate();

Но при запуске проекта ничего не появляется.

Ответы [ 2 ]

2 голосов
/ 29 ноября 2011

Вы должны поместить свой код в событие панели Paint.

    private void panel1_Paint(object sender, PaintEventArgs e)
    {
        Image imag = Image.FromFile(filename);
        e.Graphics.DrawImage(imag, new Point(0,0)); 
    }

Это гарантирует, что каждый раз, когда панель перерисовывается (после отмены по какой-либо причине), ваше изображение становится видимым.

1 голос
/ 29 ноября 2011

Попробуйте изменить это на:

private void drawP_Paint(object sender, PaintEventArgs e)
{
    e.Graphics.DrawImage(imag, new Point(0,0));
}

Кроме того, по вашим комментариям может показаться, что событие не было подключено. Пример:

public Form1()
{
  InitializeComponent();
  drawP.Paint += drawP_Paint;
}

Чтобы нарисовать линию на этом изображении:

private void button1_Click(object sender, EventArgs e) {
  using (Graphics g = Graphics.FromImage(imag)) {
    g.DrawLine(Pens.Red, new Point(0, 0), new Point(32, 32));
  }
  drawP.Invalidate();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...