用C#Graphics绘图,最小化窗口后消失的问题

我的程序是按下一个BUTTON后,画一条直线,但是当按下两次按钮画出两条线时,一旦窗口最小化,第一条线就不见了,只有第二条线。请问用什么办法可以是两条线都存在呢?(paint重载和onpaint重写都用过了)

你非要重载嘛……

你画一个picturebox
Bitmap bm = new Bitmap(300,300);//这个是位图的大小,一会画图的范围就是那么大
Graphics g = Graphics.FromImage(bm);
然后用g来画图
然后g.Save();
然后picturebox.Image = bm;追问

你好,小弟刚开始学习C#,菜鸟一个,你能把你的方法说的再详细一点吗?

追答

你不是在重载(那其实叫重写)中写了

Graphics g = this.CreateGraphics();


定义一个全局变量private Bitmap bm;
把这个换成
bm = new Bitmap(300,300);//这个是位图的大小,一会画图的范围就是那么大
Graphics g = Graphics.FromImage(bm);

然后把我刚才说的过程放到Form_Load事件中就行了

追问

其实我不理解的就是你刚才说的那个过程

追答

你说按下一个BUTTON后,画一条直线
你应该是用了Graphics.DrawLine()方法对不对
可是你的Graphics是不是用的是
this.CreateGraphics()

这个是用来在窗体上画图的
最小化后还原时窗体要重绘
所以用了你的OnPaint方法
画出了一条线,另外一条你OnPaint里又没说要画
所以只有一条线

现在把图画在位图上,然后把位图赋给能显示图片的控件上
当然Form.BackGroundImage也可以装载位图(我应该没记错吧……背景图片)
所以就定义一个全局变量
然后
bm = new Bitmap(300,300);
创建了一个300*300的位图
Graphics g = Graphics.FromImage(bm);

这样就能在位图上画图了
然后你Graphics.DrawLine()的时候就相当于在位图上画图
这会就跟窗体重绘没关系了
然后g.Save();就保存了刚才在位图上画的图
然后Form.BackGroundImage = bm;
或者PictureBox.Image = bm;
这就是把位图装到这些能显示图片的控件里了

P.S:你初学的话,是不是应该从语法啊,类和对象啊什么的开始学啊,不然这个你没法看懂啊

温馨提示:答案为网友推荐,仅供参考
相似回答