在VisualBasic.Net中当我激活一个图片框然后在其上绘制一些东西时,它会绘制然后立即变为空白。当我重新绘制它时工作正常,但在我第一次使用它时几乎总是会弄乱。这已经发生在几个不同的程序中,帮助文件没有帮助。
答案 0 :(得分:1)
尝试设置DoubleBuffered
属性
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.doublebuffered.aspx
如果不是,请提供更多信息。
答案 1 :(得分:1)
通常情况下,如果您在图片框或其他控件上绘图,则必须接管OnPaint事件,并且您有责任保留您在此事件上绘制的内容。
答案 2 :(得分:0)
谢谢安德鲁,但没有帮助。我正在使用.Net Framework 1.1,它不提供DoubleBuffered属性......它是2.0中的新功能。
不确定要提供的其他信息..代码是300行长。单击一个按钮时,代码会扩展我的表单,使两个图片框可见(一个在另一个上面(后面一个用于某些图形标签),然后使用一些图形画笔和笔在前面绘制图形框。有一些数据库活动和计算同时在后台进行。
答案 3 :(得分:0)
我假设您使用的是标准PictureBox组件。你在Paint-Handler中画画吗?如果没有,那么PictureBox将在下次要求重绘时删除你画的东西(擦除背景等)。
答案 4 :(得分:0)
是的,我相信我使用的是标准相框。
通过Paint-Handler,我假设你的意思是[Control] .PaintEvent Handler。不,我没有使用事件处理程序来进行绘图...绘制我的图表本身不是一个事件,而是对按钮点击事件做出更大响应的一部分。
如果你说让绘图代码成为一个独立的特定处理程序的一部分可以解决我的问题,那么我想每次我想重绘图表时都可以引发一个内部事件。但我宁愿弄清楚是什么导致PB重新绘制而不被告知。
答案 5 :(得分:0)
如果你不能使用DoubleBuffered,你可以隐藏第二个图片框。你在里面绘图,一旦完成,你就会回到可见的那个。这样,绘制过程就在隐藏的过程中完成,并且不会显示白色/闪烁。