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);
}
}
}
为什么没有画出那一条直线阿?
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);
}
}
}
为什么没有画出那一条直线阿?
我用的c#.net2005
就没有的
{
InitializeComponent();
}
修改成
public Form1()
{
InitializeComponent();
this.Paint += new System.Windows.Forms.PaintEventHandler(this.OnPaint);
}
试一下看看
{
Pen pen1 = new Pen(Color.Red, 3);
e.Graphics.DrawLine(pen1, 3, 10, 30, 10);
}
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)
试一下看看
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);
}
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();
}