Проблема при рисовании на панели в Winform - PullRequest
0 голосов
/ 29 июля 2011

В обработчике события загрузки формы у меня есть следующий код

    Panel pHText = new Panel();
    Font myFont = new Font("Arial", 14);
    pHText.Location=new Point(10,10);
    pHText.Size=new Size(200,200);
    pHText.BackColor = Color.White;
    Graphics g = pHText.CreateGraphics();
    g.DrawLine(new Pen(Color.Black), 0, 0, 10, 10);
    g.DrawString("text", myFont, Brushes.Blue, 10, 10);
    Controls.Add(pHText);

Белая форма показана в форме, но те, которые рисуют линии и строки, не являются.

Ответы [ 3 ]

2 голосов
/ 29 июля 2011

Необходимо рисовать на панели в событии OnPaint . Вы не можете видеть свой чертеж, потому что после обновления компонентов они перерисовываются - но вы этого не делаете.

2 голосов
/ 29 июля 2011

этот код будет добавлен в событие загрузки формы

Panel pHText = new Panel();
pHText.Name = "ctrId"; //specify control name, to access it in other parts of your code
pHText.Location = new Point(10, 10);
pHText.Size = new Size(200, 200);
pHText.BackColor = Color.White;
pHText.Paint += paintingUrCtr;//adding onpaint event
Controls.Add(pHText)

добавить событие рисования с именем paintingUrCtr.

private void paintingUrCtr(object sender, PaintEventArgs e)
{
        Font myFont = new Font("Arial", 14);
        e.Graphics.DrawLine(new Pen(Color.Black),  0, 0, 10, 10);
        e.Graphics.DrawString("text", myFont, Brushes.Blue, 10, 10);
}
1 голос
/ 29 июля 2011

FormLoad - это неправильное место для рисования на графике.Попробуйте использовать перегрузку метода OnPaint и e.Graphics внутри.

protected override void OnPaint(PaintEventArgs e)
{
   // If there is an image and it has a location, 
   // paint it when the Form is repainted.
   base.OnPaint(e);
   if(this.picture != null && this.pictureLocation != Point.Empty)
   {
      e.Graphics.DrawImage(this.picture, this.pictureLocation);
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...