VS2005 GDI在pictureBox上画图为什么会消失

打开运行点击按钮,pictureBox上显示图形,但是当该窗体隐藏后再打开,图形就会消失?这是为什么?

在窗体上添加picturebox和两个button,添加button的点击事件,执行下面的代码你就可以看到差别了,第一段代码窗口最小化再还原图像就没有了,第二段代码没有这个问题,因为你直接在窗口上画的内容是不会被保存下来了,窗口一重绘图像自然就没有了。而通过对picturebox添加图片的方法,只要图片存在,picturebox的图像就在
private void button1_Click(object sender, EventArgs e)
{
Graphics g = this.pictureBox1.CreateGraphics();
g.Clear(Color.Black);
g.DrawRectangle(new Pen(Color.Red),10,10,40,20);
g.Dispose();
}

private void button2_Click(object sender, EventArgs e)
{
Bitmap bmp = new Bitmap(this.pictureBox1.ClientRectangle.Width, this.pictureBox1.ClientRectangle.Height);
Graphics g = Graphics.FromImage(bmp);
g.Clear(Color.Black);
g.DrawRectangle(new Pen(Color.Red), 10, 10, 40, 20);
g.Dispose();
this.pictureBox1.Image = bmp;
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-07-16
可以实现 ,不过你的想法错了。不是在pictruebox控件上画图 ,而是在pictruebox中的图片里画图 ,你只要你把图画到了图片上,那么pictruebox显示就会是你画过的图了。 当然 ,你要将pictruebox的image属性重新指定以下就可以了。不然的话,你图片画了,但pictruebox没刷新,那么就看不到效果了。具体操作我们可以交流。希望可以帮到你.!
第2个回答  2011-07-16
你试试重写窗体的OnPaint函数,把在Picturebox上画图的代码都贴到这个函数里,就可以了。
因为每次窗体隐藏再打开,都会擦除原先的图形,只有重写OnPaint函数,才能不断引发图形的重绘事件。
第3个回答  2011-07-16
c# GDI 画图 在picture上面 DrawString();方法画图但是 我设定picture的可以实现 ,不过你的想法错了。不是在pictruebox控件上画图 ,而是在pictrue

VS2005 GDI在pictureBox上画图为什么会消失
第一段代码窗口最小化再还原图像就没有了,第二段代码没有这个问题,因为你直接在窗口上画的内容是不会被保存下来了,窗口一重绘图像自然就没有了。而通过对picturebox添加图片的方法,只要图片存在,picturebox的图像就在

VB中在PICTUREBOX中的画图问题
2.你的要求较为复杂 这个需要多个透明的层嵌套(或者用gdi来绘制背景透明的图),否则不可能实现任何一个图形画了之后还可以选择并且拖动大小这个要求,而且这一步的话,每一个图在picturebox内需要定义可以如何拖动,是否可以向桌面窗口那样部分超出,还是说所有的都在picturebox内等等,这个都需要根据你的...

VB2008中用GDI+画图的问题
因为一刷新图就消失了,控件 TabControl上会自动刷新,在Form1_Paint中绘制可避免 或者改成下面的代码 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click PictureBoxTemperature001.Image = Nothing Dim intWidthAll, intHeightAll As...

VS 有关GDI+画图的问题
1,新建个Form1窗体,拖一个大点的PicutreBox 2,右击PicutreBox控件,打开属性,切换到事件选项卡 3,双击Paint事件(也就是该PictureBox重绘时候执行的代码),进入Paint事件的代码编辑 4,写下这么几行代码 SolidBrush brush=new SolidBrush(Color.Red);\/\/画刷,红色的 e.Graphics.FillEllipse(brush...

vs2005 如何将内存中的数据显示到pictureBox控件上
在你的 prictureBox控件下面设置一个上传照片的按钮,然后输入如下代码并且在控件的右侧的小三角里选择Zoom属性,这样你的图片就可以上传并显示出来,并且最重要的是在你的窗体上要有一个 openFileDialog的控件 openFileDialog1.ShowDialog();Bitmap b = new Bitmap(openFileDialog1.FileName);pictureBox1...

vb如何在picture上用GDI绘图?
方案一.使用Declare的方式,声明所有需要用到的GDI函数,在PictureBox的DC上完成绘图 方案二.VB本身也提供有绘图函数,直接用之即可

在C#中如何按照随机点数移动图片(有多个picturebox,就在这多个pictureb...
然后你把这个坐标和picturebox控件的左上角一一比对,看那个最接近(x,y)就在哪个picturebox中显示。不过如果picturebox过多的话,会非常麻烦。所以请看第二种方法:不用picturebox,直接随机产生x和y(当然x,y的大小你要限定,不能超过坐标)以后,直接GDI+画图画到这个窗体上面。

vb.net能不能像在picturebox上画图一样,在form上画图?
可以的,不过要调用GDI+ 在System.Drawing下 具体请百度,手头没有VS 而且我是用C#的。。

求一用户控件,picturebox和label的组合,开发平台:vs2005,C#.
Bitmap myJpeg = new Bitmap(" mypic.jpg");pictureBox1.Image = (Image) myJpeg;注意需要转换回Image类型,因为这是Image属性所要求的。添加一个pictureBox1 ,然后在button1中写如下代码,测试通过,如果想画其他图像,自己看Graphics的方法了。private void button1_Click(object sender, System....

请教GDI+在PictureControl上画图不刷新的问题
添加button的点击事件,执行下面的代码你就可以看到差别了,第一段代码窗口最小化再还原图像就没有了,第二段代码没有这个问题,因为你直接在窗口上画的内容是不会被保存下来了,窗口一重绘图像自然就没有了。而通过对picturebox添加图片的方法,只要图片存在,picturebox的图像就在 ...

相似回答