using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;namespace graph
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }        private void Form1_Load(object sender, EventArgs e)
        {        }
        private void Form1_paint(object sender, EventArgs e)
        {
            Graphics g = this.CreateGraphics();
            Pen pen1 = new Pen(Color.Red, 3);
            g.DrawLine(pen1, 3, 10, 30, 10);
        }
    }
}
为什么没有画出那一条直线阿?

解决方案 »

  1.   

    没有啊 ??
    我用的c#.net2005
    就没有的
      

  2.   

    public Form1()
            {
                InitializeComponent();
            }
    修改成
            public Form1()
            {
                InitializeComponent();
                this.Paint += new System.Windows.Forms.PaintEventHandler(this.OnPaint);
            }
    试一下看看
      

  3.   

    private void Form1_paint(object sender, EventArgs e)
            {
                Pen pen1 = new Pen(Color.Red, 3);
                e.Graphics.DrawLine(pen1, 3, 10, 30, 10);
            }
      

  4.   

    刚才发的错了,是把
    public Form1()
            {
                InitializeComponent();
            }
    修改成
            public Form1()
            {
                InitializeComponent();
                this.Paint += new System.Windows.Forms.PaintEventHandler(this.OnPaint);
            }
    同时把
     private void Form1_paint(object sender, EventArgs e)
    改成
    private void OnPaint(object sender, PaintEventArgs e)
    试一下看看
      

  5.   

    你的代码有两个地方最好改进一下:
    1:最好使用参数e的Graphics来绘图,而不是再建立一个。
    2:最好使用重写而不是添加事件处理,比如:
    protected override void OnPaint(PaintEventArgs e)
    {
    base.OnPaint(e);
    Pen pen1 = new Pen(Color.Red, 3);
    e.Graphics.DrawLine(pen1, 3, 10, 30, 10);
    }
      

  6.   

    还有一个就是使用对象后要注册Dispose,或使用Using语句,比如:
    protected override void OnPaint(PaintEventArgs e)
    {
    base.OnPaint(e);
    using (Pen pen1 = new Pen(Color.Red, 3))
    {
    e.Graphics.DrawLine(pen1, 3, 10, 30, 10);
    }
    }
    或:
    protected override void OnPaint(PaintEventArgs e)
    {
    base.OnPaint(e);
    Pen pen1 = new Pen(Color.Red, 3);
    e.Graphics.DrawLine(pen1, 3, 10, 30, 10);
    pen1.Dispose();
    }
      

  7.   

    呵呵,接受批评,我是新手啊,正在啃GDI+呢,呜呜