第一次在CSDN发贴,以前只是看贴不回贴
还请大家指点一二
,在pictureBox1_Paint事件中用Graphics绘图后
,如何保存pictureBox1中的图像?
在pictureBox1_Paint事件中绘制完毕后
pictureBox1.Image依然=null
e.Graphics.DrawLine绘制的图像没有反应到image中去么?
pictureBox1_Paint事件过后
我在另一个按钮里调用 ,
pictureBox1.Image.Save("c:\\a.bmp");
则失败,此时image=null
我也试过这样弄,
Bitmap bmp=new Bitmap(200,500);
Graphics g = Graphics.FromImage(bmp); ;// e.Graphics;
//横网格
Pen backpen = new Pen(Color.FromArgb(cIDE_INFO.colorBack.ToArgb()-0x00404040)); //背景色变暗40
backpen.DashStyle = DashStyle.Custom; //.DashDotDot;
backpen.DashPattern = new float[] { 1, 6 };
for (float i = cIDE_INFO.ideCodeSize.Height / 2; i < pictureBox1.Height; i += cIDE_INFO.ideCodeSize.Height)
{
g.DrawLine(backpen, 0, i, pictureBox1.Width, i);
}
//竖网格
for (float i = cIDE_INFO.ideCodeSize.Width / 2; i < cIDE_INFO.ideCodeVnum * cIDE_INFO.ideCodeSize.Width; i += cIDE_INFO.ideCodeSize.Width)
{
g.DrawLine(backpen, i, 0, i, pictureBox1.Height);
}
//画指令
//todo:要翻页
Point tp=new Point();
foreach (ArrayList tzls in ide_all_zls)
{
tp.X = 0;
foreach (object tzl in tzls)
{
cIDE_INFO.ideDrawMove(tp, g);
if (tzl != null)
{
if (tzl.GetType() == typeof(ide.code_type))
{
cIDE_INFO.DrawZL((ide.code_type)tzl, g);
if (((ide.code_type)tzl).分支 == true)
{
cIDE_INFO.ideDrawMove(tp, g);
cIDE_INFO.DrawV(g);
}
}
else if (tzl.GetType() == typeof(string))
{
string tstr = (string)tzl;
if (tstr.IndexOf("H") >= 0)
{
cIDE_INFO.DrawH(g);
}
}
}
tp.X++;
}
tp.Y++;
}
//画当前插入点 反色处理
g.ResetTransform();
pictureBox1.Image = bmp;
这样pictureBox1.Image有东西了,可以保存了了,但似乎很卡,最小化,最大化时,即产生重绘事件时,
我主界面上的工具栏也重绘不了啦,
像如图所示
正常的:
异常的:
------解决思路----------------------
你绘图管绘图,Bitmap bmp也照样绘制,相当于同时绘制两张图,最后pictureBox1.Image别去绑bmp,保存用bmp.save
------解决思路----------------------
这取决于你另一个pictrueBox如何画,如果是和第一个同步画,那么处理方法和你这个一样,如果是事后才复制,那么就用那个bmp对象绑Image
------解决思路----------------------
Graphics g2 = Graphics.FromImage(bmp);Graphics又不是规定只能有1个,你两个同时用不就即画了picturebox又有了一个bmp副本了嘛,有了副本什么时候用都行了
------解决思路----------------------
既然绘的图内容要保存,那可以在内容有变化的时候绘到一个Image上,然后在Picturebox上显示就可以了.
pictureBox1_Paint 这个方法楼主不需要用,它只是在窗体显示图像的时候可以做些添油加醋的事情.