在构造函数初始化函数之后调用了自己写的画图函数,可以确定函数执行了,但是没有图像,感觉是没有指定父容器的原因,代码如下:
namespace firstAPP
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            
            InitializeComponent(); 
            draw();       
        }
         private void draw()
        {
            Graphics g = this.CreateGraphics();
        
            
            SolidBrush yellowBrush = new SolidBrush(Color.LightGoldenrodYellow);
            Point[] pointD = { new Point(100, 350), new Point(600, 350), new Point(600, 700), new Point(100, 700) };
            g.FillPolygon(yellowBrush, pointD);
       
        }
   }
}
还请指点一下,先谢过了

解决方案 »

  1.   

    private void Form1_Paint(object sender, PaintEventArgs e)
            {
                e.Graphics.DrawLine(System.Drawing.Pens.Red, 1, 1,
            50, 50);
            }
    你要不要试下这个
      

  2.   

    构造函数?
    Graphics g = this.CreateGraphics();是什么东西?少年,你自己知道你画到哪去了吗?
      

  3.   

    你画的时候窗口还没有显示出来,显示的时候刷没有了private void Form1_Shown(object sender, EventArgs e)
            {
                draw();
            }
    可以在窗口的第一次显示事件里画,可以看出来。但是不建议你这么做,因为绘画的区域更新后画的东西会刷掉,像一楼说的,在paint事件里面,用e.Graphics画才是正确的。
      

  4.   

    放到Paint事件中,构造函数后,后续会引发重绘事件,都给你冲掉了
      

  5.   

    2楼是正解。
    也可以重写OnPaint事件帮LZ理一下graphics的相关概念
    1.你要画东西,首先要知道画在哪里,在你这个需求里就是Form里了。
    2.通过什么东西去画? 必须是graphics了,我想这个LZ也可以理解。
    3.通过1,2可以知道,我需要得到form的graphics,然后再实现画的逻辑,那么怎么得到graphics?  LZ你的方法是可以得到graphics的。4.问题来了,为啥LZ要画的东西没出来呢。其实画是画了,只是form在加载以后被触发了重画,所以构造函数里的画的逻辑就没了,因为构造函数只执行一次。5.然后怎么办?.net里面,控件触发了重画一定会调用OnPaint方法,或者给了一些事件,就像2楼,那么解决方案就是在OnPaint里面画,或者2楼一样在事件里画。
      

  6.   

    多谢各位大虾相助,我通过重载Onpaint()函数解决了这个问题,但是没有想到是画了被后续操作冲掉了,多谢了!