【问题标题】:Accessing a Graphics object from a different class从不同的类访问 Graphics 对象
【发布时间】:2011-09-06 15:10:44
【问题描述】:

我试图通过将 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 对象?

【问题讨论】:

    标签: c# winforms graphics panel


    【解决方案1】:

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

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

    无论哪种方式,您都必须在 Panel 的绘制事件中完成这项工作,该事件会在您使其无效时触发。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多