从其他类访问Graphics对象

时间:2011-09-06 15:10:45

标签: c# winforms graphics panel

我试图通过将它作为参数传递给另一个类中的函数来访问Panel的Graphics对象,但是我收到一条错误,说“参数无效”。
这是我在面板类中使用的代码:

Graphics g = contentPan.CreateGraphics();//contentPan is a Panel
RectMaker rect_Maker = new RectMaker();
rect_Maker.Draw(g);

这是驻留在RectMaker类中的函数:

public void Draw(Graphics g)
{
   try
   {
     g.FillRectangles(Brushes.White, SmallRect);
     g.DrawRectangles(Pens.Black, SmallRect);
   }
   catch (Exception ex)
   {
     MessageBox.Show(ex.Message);
   }
 }

是否可以从其他类访问Panel的Graphics对象?

1 个答案:

答案 0 :(得分:1)

如果面板显示位图,您可以从中生成图形对象,然后使面板无效以显示更新。

或者只是使面板无效并使用您从其他类中获得的任何新信息来绘制更新。

无论哪种方式,你都必须在Panel的paint事件中完成这项工作,当你使它失效时会触发它。

private void panel1_Paint(object sender, PaintEventArgs e)
{
  RectMaker rect_Maker = new RectMaker();
  rect_Maker.Draw(e.Graphics);
}