public Form1()
        {
            InitializeComponent();            Pen p = new Pen(Color.Yellow);            Graphics gThin = pictureBox1.CreateGraphics();
            gThin.DrawLine(p, 50, 50, 100, 100);            //PersonThinBuilder ptb = new PersonThinBuilder(gThin, p);
            //ptb.Build();
        }
程序运行以后,看不到线啊。
如果说放在paint里面,这个方法我不知道怎么用,麻烦给一个详细一些的解答。
谢谢了。

解决方案 »

  1.   

    直接把画线的那三句放在paint事件里就行!
      

  2.   

    放在paint事件里,我用一个断点跟了一下,就是在一直循环。不放断点跟,也看不到任何效果。
      

  3.   

    找到正确的方法了,在paint里面,加入这段代码
    Graphics gThin = e.Graphics;而我看的书上,写的是
    Graphics gThin = pictureBox1.CreateGraphics();
    不知道这两段代码有什么区别?
      

  4.   

    都是用pictureBox1作为画板的。
    那三句话如果放在Form的paint事件里,或者点击按钮触发等事件里,用CreateGraphics()可以得到画板对象,但这样得手动触发或窗体重绘时才化;
    如果放在pictureBox的paint事件中,一般用e.Graphics得到本对象的画板对象。
      

  5.   

    paint 当重绘控件时会引发 Paint 事件。 该事件将 PaintEventArgs 的实例传递给用来处理 Paint 事件的方法。 private PictureBox pictureBox1 = new PictureBox();
    private void Form1_Load(object sender, System.EventArgs e)
    {
        pictureBox1.Dock = DockStyle.Fill;
        pictureBox1.BackColor = Color.White;
        pictureBox1.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox1_Paint);    this.Controls.Add(pictureBox1);
    }private void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
    {
        Graphics g = e.Graphics;    g.DrawString("This is a diagonal line drawn on the control",
            new Font("Arial",10), System.Drawing.Brushes.Blue, new Point(30,30));
       
        g.DrawLine(System.Drawing.Pens.Red, pictureBox1.Left, pictureBox1.Top,
            pictureBox1.Right, pictureBox1.Bottom);
    }