关于图形绘制的保存 求教: 如何将绘制的图形保存,防止因为Invalidate()的刷新而消失?小弟查了一下,有说用什么图形合成的,还有缓冲绘图的,但是都好像不能实现啊。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 将你绘图的代码放在控件的Paint事件处理函数中,这样重绘后图形也不会消失. 我本想让Draw类绘图那么再Form1.cs的Paint函数中都得那样声明了然后重绘啊?再数据管理比较多的时候我就晕了能不能提供点其他的方法啊?能否动态保存bitmap或是Image对象,这样画一点就存一点?或是将Draw中的Bitmap同Form1中的Bitmap合并? 往Image中绘图也可以,只要在Paint事件处理函数中用DrawImage方法将Image对象绘制出来即可: public partial class Form1 : Form { private Image img; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { img = new Bitmap(this.ClientRectangle.Width, this.ClientRectangle.Height); Graphics dc = Graphics.FromImage(img); dc.DrawLine(Pens.Black, 0, 0, this.ClientRectangle.Width, this.ClientRectangle.Height); } private void Form1_Paint(object sender, PaintEventArgs e) { Graphics dc = e.Graphics; dc.DrawImage(img, 0, 0); } } 多谢啊,但还是不能否如何实现对img对象的更新啊如果我再用一个事件绘图了,如单击等img=new Bitmap(...)这样继续绘图,也可以显示 public partial class Form1 : Form { public Form1() { InitializeComponent(); } private Bitmap img; private Bitmap img2; private void Form1_Load(object sender, EventArgs e) { img = new Bitmap(this.ClientRectangle.Width, this.ClientRectangle.Height); Graphics dc = Graphics.FromImage(img); dc.DrawLine(new Pen(Color.Red, 2), 0, 0, this.ClientRectangle.Width, this.ClientRectangle.Height); img2 = new Bitmap(this.ClientRectangle.Width, this.ClientRectangle.Height); Graphics dc2 = Graphics.FromImage(img2); dc2.DrawLine(new Pen(Color.Red, 2), this.ClientRectangle.Width,0 , 0, this.ClientRectangle.Height); } private void Form1_Paint(object sender, PaintEventArgs e) { Graphics dc = e.Graphics; dc.DrawImage(img, 0, 0); dc.DrawImage(img2, 0, 0); }小弟回去试试,谢谢! C#图像处理相关问题 请问一个双缓冲绘图问题? 控制视频播放开始时间 为什么看不见设计器 如何定义全局错误页面 视频教程如何限制客户只能在自己电脑上看呢? 使用Tessnet2_32.dll但是老是报错 求一验证码识别 问两个在C#中的小技巧类的问题 答完就给分 有没有好用的GRID控件 请教:如何在PictureBox上进行图形重绘 c#操作Mdb时异常
那么再Form1.cs的Paint函数中都得那样声明了然后重绘啊?
再数据管理比较多的时候我就晕了
能不能提供点其他的方法啊?
能否动态保存bitmap或是Image对象,这样画一点就存一点?
或是将Draw中的Bitmap同Form1中的Bitmap合并?
{
private Image img; public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
img = new Bitmap(this.ClientRectangle.Width, this.ClientRectangle.Height); Graphics dc = Graphics.FromImage(img);
dc.DrawLine(Pens.Black, 0, 0, this.ClientRectangle.Width, this.ClientRectangle.Height);
} private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics dc = e.Graphics; dc.DrawImage(img, 0, 0);
}
}
如果我再用一个事件绘图了,如单击等
img=new Bitmap(...)
这样继续绘图,也可以显示
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private Bitmap img;
private Bitmap img2; private void Form1_Load(object sender, EventArgs e)
{
img = new Bitmap(this.ClientRectangle.Width, this.ClientRectangle.Height); Graphics dc = Graphics.FromImage(img);
dc.DrawLine(new Pen(Color.Red, 2), 0, 0, this.ClientRectangle.Width, this.ClientRectangle.Height);
img2 = new Bitmap(this.ClientRectangle.Width, this.ClientRectangle.Height);
Graphics dc2 = Graphics.FromImage(img2);
dc2.DrawLine(new Pen(Color.Red, 2), this.ClientRectangle.Width,0 , 0, this.ClientRectangle.Height); }
private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics dc = e.Graphics;
dc.DrawImage(img, 0, 0);
dc.DrawImage(img2, 0, 0);
}
小弟回去试试,谢谢!