为什么月亮在运动时闪烁?

Private Sub timer1_timer()
Static i As Integer
Picture1.Cls
Picture1.FillStyle = 0
Picture1.FillColor = vbYellow
Picture1.Circle (Picture1.Width / 3 + i, Picture1.Height / 3 + i), Picture1.Width / 6, vbBlue
i = i + 50
End Sub

picture背景是夜空,为什么月亮在运动时闪烁呢?很费解啊,求教各位大神

作者: vbtimer   发布时间: 2011-06-13

设置属性:

picture1.autoredraw=true

作者: myjian   发布时间: 2011-06-13

Picture1.AutoRedraw = True

这样试试

作者: flfq   发布时间: 2011-06-13

引用 1 楼 myjian 的回复:

设置属性:

picture1.autoredraw=true


画完后用picture1.refresh来显示

作者: WallesCai   发布时间: 2011-06-13

  AutoRedraw 属性:返回或设置从图形方法到持久图形的输出。 
  语法 object.AutoRedraw [= boolean]   AutoRedraw 属性语法包含下面部分:   部分 描述   object 对象表达式,其值是“应用于”列表中的一个对象。   Boolean 布尔表达式,指定如何重绘对象,“设置值”中有详细描述。   设置值   boolean 的设置值如下:   设置值 描述   True 使 Form 对象或 PictureBox 控件的自动重绘有效。图形和文本输出到屏幕,并存储在内存的图象中。该对象不接受绘制事件,必要时,用存储在内存中的图象进行重绘。   False (缺省值)使对象的自动重绘无效,且将图形或文本只写到屏幕上。 当需要重画该对象时,Visual Basic 会激活对象绘制事件。   说明   使用下列图形方法工作,如:Circle、Cls、Line、Point、Print 和 Pset,该属性极为重要。利用这些方法,在改变对象大小或隐藏在另一个对象后又重新显示的情况下,设置 AutoRedraw 为 True,将在 Form 或 PictureBox 控件中自动重绘输出。   运行时 在程序中设置 AutoRedraw,可以在画持久图形(如背景色或网格)和临时图形之间切换。如果设置 AutoRedraw 为 False,以前的输出成为背景屏幕的一部分。当 AutoRedraw 设置为 False,用 Cls 方法清除绘图区时不会删除背景图形。把 AutoRedraw 改回 True 后,再用 Cls 将清除背景图形。   注意 如果设置 BackColor 属性,所有图形和文本,包括持久图形,都被清除。一般来说,除非 AutoRedraw 设置为 True,所有图形都需用 Paint 事件显示。   要取回在 AutoRedraw 设置为 True 时创建的持久图形,用 Image 属性。当 AutoRedraw 设置为 True 时,用对象的 hDC 属性可以将持久图形传送给Windows API。   如果设置窗体的 AutoRedraw 属性为 False,然后最小化该窗体,则将 ScaleHeight 和 ScaleWidth 属性设置为图标大小。在 AutoRedraw 设置为 True 时,ScaleHeight 和 ScaleWidth 保持为恢复窗口的尺寸。如果设置 AutoRedraw 属性为 False,Print 方法将在诸如 Image 和 Shape 等图形控件的顶部打印。

作者: chinayuppie   发布时间: 2011-06-13