关于picturebox重绘的问题

需要先说明的是,
我的软件中需要根据按钮事件,在同一个picturebox中绘制3钟不同的图形
开始我编译好后,图形绘制没有问题,但一旦打开窗口、或者使用picturebox的滚动条,就会被遮挡部分,被遮挡的不会自动恢复。
为了解决这个问题,我创建了一个bitmap,在bitmap中绘制,然后传到picturebox中,这样确实成功了,但只成功了前两个,第3种图形无法显示,直接一片空白。
经过调试,每一步都没有问题,表格、点线都绘制出来了,直到运行picturebox.Image=img之后突然就变成空白了。

开始,我个人感觉可能是bitmap不够大,但我要绘制的图形是和数据关联的,我也不知道要绘制多大,而且设置bitmap的尺寸足够大了后依然一片空白。
求高手指点,为什么不成功?为什么前两个图像能成功运行,第三个却出了问题,(画图代码是无问题的)。
好的加分,不过可能会晚点。

奇怪,你第二次问怎么还是分到VB来了?那我就不客气再回答一次了:

VB解决这种问题很简单,就是把PictureBox的AutoRedraw属性设为True即可,就是说只要图片被遮挡后它会“自动重绘”。我想C#中的PictureBox也应该有这样类似的属性吧?如果没有,那么长期被C#鄙视的VB这回总算可以鄙视一下C#了!追问

奇怪的度娘,我只提问了一次。

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-09-17
回到第一个问题,PictureBox被遮挡以后,再取消遮挡,被遮挡的部分内容消失,这是一个属性 AutoRedraw=False造成的,设置为True即可。False的好处是绘制速度快,但没有保存在显存里。AutoRedraw=True是将绘图内容绘制在显存里,速度较慢,有时还需要.Refresh方法刷新一次才行,但只要显示出来,就不怕被遮挡了。

关于picturebox重绘的问题
VB解决这种问题很简单,就是把PictureBox的AutoRedraw属性设为True即可,就是说只要图片被遮挡后它会“自动重绘”。我想C#中的PictureBox也应该有这样类似的属性吧?如果没有,那么长期被C#鄙视的VB这回总算可以鄙视一下C#了!

在C#中窗体中添加一个PictureBox控件的重绘问题
我没有遇到这样的情况,可能是机器运行有点慢吧。一般情况下都会自动重绘的,如果不自动重绘的话,你可以让它重绘。调用菜单栏之后,调用PictureBox.Refresh();

C# WinForm 鼠标移动PictureBox控件的问题
LZ你好,出现阴影或闪烁现象是由控件重绘造成的。控件改变自身大小、位置,或者改变显示状态,都会使控件重绘,是否有良好的用户体验是由硬件性能和是否对重绘进行了优化来决定的。优化建议:使用双缓冲技术。即把窗体(Form)的DoubleBuffered的值设为True;双缓冲技术的原理是:先将图像绘制到内存中的一块画布...

关于C#的问题 那个picturebox里面的paint函数 第一次绘图成功 然后我单 ...
Paint是重绘事件的处理函数只能在Form1_Load触发后才能触发或者是在AutoSizeChanged 后自动触发~你要现在其他地方触发只能手动执行重绘绑定的处理函数了

C#重绘控件后矩形框部分线条缺失问题
你用CreateGraphics 产生的绘图对象,这种方法 只要被任何其他东西挡住 绘制的东西就会消失。解决方法:1、简单的设置PictureBox 的边框选项 2、最根本的方法是 继承一个PictureBox 然后overwrite它的paint函数 这样无论怎么挡都没关系。

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

在vb6.0的picturebox里面画了一条线,怎么过3秒之后清除掉~~~要求只...
您是做游戏画面?如果游戏简单的,看能否用Line控件代替画线,这样只要visible=false就擦除了,但如果有重叠问题,就要考虑把其他的线或坦克什么的都用控件代替。注意picturebox是否有autoredraw属性,有的话设置为true。有问题的话,把窗体的autoredraw也true,防止控件会擦除画上去的东西。但是楼主要明白...

我在pictureBox1_Paint里面写的画图代码,为什么pictureBox1.Image...
任何控件都有Paint方法 这不是pictureBox特有的,你这只是改变pictureBox的绘制相当于重绘这个控件,和pictureBox1.Image是两码事。

C#graphics在窗体上画的图怎么能随着窗体的改变而改变
Graphics g = e.Graphics;Pen pen = new Pen(Color.Green, 1);g.DrawLine(pen,start,end);} 在PictureBox_Paint是为了你画的图能自动重绘 而画的图根据窗口变大变小自动变化主要是靠startx和end,看到没,这两个点是跟你的窗口的宽和高有关系的,当窗口变化了,当然画的图就自动变化了。

C#中自绘图形的重绘
具体绘图方法:引用如下命名空间:using System.Drawing;using System.Drawing.Imaging;申明变量:private Image theImage;\/\/要绘图的图片对象 private Graphics ig; \/\/在图片上绘图的Graphics对象 private System.Windows.Forms.PictureBox MyPicBox;\/\/窗体上的picturebox控件 theImage=new Bitmap(600,800...

相似回答
大家正在搜