问题是:Graphics对象不一定要用PaintEventArgs来做,例如可以这样:
Graphics g=Graphics.FromHwnd(this.Handle);至于填入参数,例如e,有的时候可以用null填入来满足,有时候就要真的构造了一个实例了。

解决方案 »

  1.   

    我也看到Graphics g=Graphics.FromHwnd(this.Handle);在教材上也有,但是我不知道FromHwnd这个方法是什么意思,看了帮助也不明白。我放到程序中也不行,错误说不知道Handle是什么。
    CForce能不能再帮一下忙呀
      

  2.   

    在windows里,每个窗体都有一个不同的Handle(当它是一个整数吧),用于标示它到底是哪个窗体,正如我们每个人都有一个身份证。Hwnd意思是Handle of Window.
    Graphics g=Graphics.FromHwnd(this.Handle);就是根据Handle对相应窗体创立Graphics对象。
    你说放到程序中也不行,肯定某地方错了。
      

  3.   

    我也遇到了同样的问题,我想在一个panel上画图。
    可是用
    Graphics g=Graphics.FromHwnd(panel1.Handle);
    g.DrawLine(...)就是画不出来。
    可是,在Panel的Paint事件中确可以画出来。我查看了一些handle的值,可是没有什么结果。
    不知道zizza解决了没有?
      

  4.   

    不需要handle,试着直接创建一个Graphics对象如:
    Graphics g=new Graphics();构造器需不需要参数我没去查。
      

  5.   

    直接这样创建一个Graphics,那么这个Graphics是在哪里画图呢?
      

  6.   

    Graphics根本就没有自己的构建器,
    这样使用
    Graphics g = new Graphics();是不行的。
    只可以通过Grahpics的几个static方法来构建一个Graphics.
      

  7.   

    有一种方法可以解决画图的问题,比如要在panel1中画图,
    那么,把画图的代码写在panel1中,这样自然可以使用e.Graphics.DrawLine(...)。如果在其他的函数中要画图,则调用panel1.Invalidate()方法。这个方法的好处就是移动window的时候图像也是绘画出来的。不过,Graphics.FromHwnd(panel1.Handle)工作不了,确实很郁闷。
      

  8.   

    我看到过一个例子,它在用Graphics.FromHwnd(this.Handle)方法的时候,前面好像有EventHandle指针,不知道是不是要有这玩意儿才能用FronHwnd方法