自动重绘,如果是False的话,不会自动重绘,必须执行Refresh指令才会重绘。
所谓重绘,是指当窗体或控件最小化,或被遮挡以后,再显示的时候,会将被遮挡的部分重新画出来。
可以通过2个方法:
1、将绘制相关代码全部放在 Form_Paint 这个事件中,其实此时不需要什么API,只要Form1.Refresh 就可以再次执行这个事件里的代码了,如果需要不同的显示,那么可以设置多个公共变量,显示不同的时期的样式就设置某个变量为不同的值,然后 Paint 中根据该值执行不同代码。
2、将AutoReDraw设置为TRUE,此时无论代码写在哪,都能将改变立即反映,但是如果程序中设计到调用 Form1.hDC 的时候可能会出问题,这个原因开始我也纳闷过,后来才知道 AutoReDraw设置为TRUE 时获取的 HDC仅是个伪HDC,是获取不到实际的HDC的 。
扩展资料:
使用下列图形方法工作,如:Circle、Cls、Line、Point、Print 和 Pset,该属性极为重要。利用这些方法,在改变对象大小或隐藏在另一个对象后又重新显示的情况下,设置 AutoRedraw 为 True,将在 Form 或 PictureBox 控件中自动重绘输出。
运行时 在程序中设置 AutoRedraw,可以在画持久图形(如背景色或网格)和临时图形之间切换。如果设置 AutoRedraw 为 False,以前的输出成为背景屏幕的一部分。当 AutoRedraw 设置为 False,用 Cls 方法清除绘图区时不会删除背景图形。把 AutoRedraw 改回 True 后,再用 Cls 将清除背景图形。
注意 如果设置 BackColor 属性,所有图形和文本,包括持久图形,都被清除。一般来说,除非 AutoRedraw 设置为 True,所有图形都需用 Paint 事件显示。
参考资料来源:百度百科-autoredraw
自动重绘,如果是False的话,不会自动重绘,必须执行Refresh指令才会重绘。
所谓重绘,是指当窗体或控件最小化,或被遮挡以后,再显示的时候,会将被遮挡的部分重新画出来。
例如:
Private Sub Form_Load()
Print "hello"
End Sub
运行代码,你会发现什么变化都没有。
但是,你把窗体的AutoRedraw属性设置为True,再次运行,会发现窗体上有"hello"几个字。而且最小化,再恢复后,这几个字也不会消失。
1、将绘制相关代码全部放在 Form_Paint 这个事件中,其实此时不需要什么API,只要Form1.Refresh 就可以再次执行这个事件里的代码了,如果需要不同的显示,那么可以设置多个公共变量,显示不同的时期的样式就设置某个变量为不同的值,然后 Paint 中根据该值执行不同代码
2、将AutoReDraw设置为TRUE,此时无论代码写在哪,都能将改变立即反映,但是如果程序中设计到调用 Form1.hDC 的时候可能会出问题,这个原因开始我也纳闷过,后来才知道 AutoReDraw设置为TRUE 时获取的 HDC仅是个伪HDC,是获取不到实际的HDC的 。