刷新表单的一部分而不是整个事情

时间:2015-05-28 19:31:03

标签: vb.net refresh

基本上我需要刷新表单的一部分而不是整个表单的代码。

我使用visual basic,我经常制作非常简单的游戏。我经常有一个播放器或不同的对象四处移动,因为我没有发布我的代码,所以我不添加纹理。相反,我设置了一堆变量来保存播放器locationwidth,然后使用e.graphics.FillRectangle ...等,这很好,并且当我按下一个键但没有任何反应时我说它移动它,所以我必须写Refresh(),它有效,它会移动!

唯一的问题是当有很多对象(如50+)时,每次程序运行Refresh()代码行时,整个form变为白色一毫秒而且通常我一直都很新鲜,因为事情一直在变化,形式只会变成癫痫的噩梦。

我知道我需要做什么,我只需要refresh整个表格的一小部分,我只是不知道如何。

1 个答案:

答案 0 :(得分:0)

怎么做

您可以使用Invalidate方法来实现您的目标。

什么是无效

为了更好地理解以下代码,您只需要了解Invalidate的作用。简单地说,使您选择的整个control无效,并强制它重绘本身。

知道无效的内容

选项1

最简单的方法是:

Me.Invalidate(New Region(New Rectangle(10, 10, 100, 100)))

通过执行此操作,您在表单的invalidate位置100 width100 height处执行(10,10)(导致重新绘制)。

选项2

如果选项1没有达到您想要的效果,我建议您使用rectangles命名Increment,以便MyRectange1.Invalidate()MyRectangle2.Invalidate()rectangle等名称访问它们。等等(最有可能是循环)。

选项3

如果您不清楚具体知道哪些region要刷新并且不想指定panelBottomLeft.Invalidate(),则可以将屏幕分开,例如4个部分(这将是容器,如面板)。然后你可以这样做: For Each ControlToRefresh In panelBottomLeft.Controls ControlToRefresh.Invalidate() Next

或者像这样:

{{1}}