用户定义的绘画不可见

时间:2013-04-16 14:27:19

标签: c# winforms gdi+

我有一个带有GroupBox的Windows窗体应用程序,一个PictureBox作为背景图像,以及来自PowerPack的几个可点击的OvalShapes。

现在我需要一些OvalShapes的标签,所以我在我的GroupBox上放了一个EventHandler,每次重绘时都应该绘制以下内容

this.groupBoxTest.Paint += new System.Windows.Forms.PaintEventHandler(this.groupBoxVirtualView_Paint);

private void groupBoxVirtualView_Paint(object sender, PaintEventArgs e)
{
    Graphics g = groupBoxVirtualView.CreateGraphics();//e.Graphics;
    g.DrawString("01", new Font("Arial", 12), new SolidBrush(Color.Black), 240, 115);
}

但字符串01永远不会被绘制出来;我所看到的是处于同一位置的椭圆形状 - 禁用它们用于测试目的也不会这样做。

我的字符串发生了什么?

标记我的PoweredOval的其他任何方式?

2 个答案:

答案 0 :(得分:0)

你必须使用

  

groupBoxVirtualView.Invalidate();

重新绘制groupBox!

答案 1 :(得分:0)

paint事件应使用发件人的图形对象:

private void groupBoxVirtualView_Paint(object sender, PaintEventArgs e)
{
  Graphics g = e.Graphics;
  g.DrawString("01", new Font("Arial", 12), new SolidBrush(Color.Black), 240, 115);
}

此外,如果GroupBox中有PictureBox,则该控件不会显示通过控件的任何GroupBox绘图。它会隐藏它。