在VB的picture控件里面画了1000来个圆,做颜色渐变,时间间隔30ms,是不是每次都要重新新画圆,如何才能不需要从新画圆,直接填充颜色,时间快点,有什么

wuganxiu 2017-07-02 11:35:52
在VB的picture控件里面画了1000来个圆,做颜色渐变,时间间隔30ms,是不是每次都要重新新画圆,如何才能不需要从新画圆,直接填充颜色,时间快点,有什么函数画圆速度更快的方法吗,谢谢
Private Sub Form_Load()
Dim r, x0, y0 As Long
r = 100
For x0 = 100 To 10000 Step 300
For y0 = 100 To 10000 Step 300
Picture1.Circle (x0, y0), r, vbBlue

Picture1.FillStyle = vbFSSolid
Picture1.FillColor = vbRed
Next y0
Next x0
End Sub


Private Sub Timer1_Timer()
B = B + 1
Dim r, x0, y0 As Long
r = 100
For x0 = 100 To 10000 Step 300
For y0 = 100 To 10000 Step 300
Picture1.Circle (x0, y0), r, vbBlue
'FillColor = RGB(255, 255, 0)
Picture1.FillStyle = vbFSSolid
Picture1.FillColor = B
Next y0
Next x0
Text1.Text = B
End Sub
...全文
365 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuganxiu 2017-10-29
  • 打赏
  • 举报
回复
WallesCai 熊孩子开学喽 T8 Blank 把这两句 Picture1.FillStyle = vbFSSolid Picture1.FillColor = B 重复放在里面,因为每个圆的颜色是不一样的
熊孩子开学喽 2017-08-23
  • 打赏
  • 举报
回复
引用 5 楼 zhao4zhong1 的回复:
Refresh
艾玛呀, 从来都是只打re后面的自己蹦出来. 多谢提醒
赵4老师 2017-07-05
  • 打赏
  • 举报
回复
Refresh
熊孩子开学喽 2017-07-05
  • 打赏
  • 举报
回复
reflash
熊孩子开学喽 2017-07-05
  • 打赏
  • 举报
回复
你把这两句 Picture1.FillStyle = vbFSSolid Picture1.FillColor = B 放在循环里重复一万次有何意图. 咋不把Text1.Text = B也放进去一块玩耍呢, 是看不起它么? 重复引用同一个对象, 可以用with, 要动画, 就要用autoredraw和reflesh这两个东西双缓冲, 你查一下用法吧.
脆皮大雪糕 2017-07-03
  • 打赏
  • 举报
回复
目测你的这个方法已经是蛮快的啦。 话说你画圈圈无非为了让人看,如果只是渐变,其实变化幅度不大,看的人并不能直接看出差异,所以你一味的追求速度意义不大,你弄到10毫秒和50毫秒,其实肉眼感觉不出来。如果你的小圈颜色和时间需要有精确的时间对应关系,那么你就不能用限定30毫秒的办法来做,而应该是画的时候取得时间,根据时间确定颜色应该是啥,然后画上去。即使因为你画的速度慢了,中间跳过了一两个变化,谁介意呢?根本看不出来!只要感官上这1000个圆圈的颜色对就行了。 其实游戏上很多也是使用了这个方法,比如显卡不行,这时候就会掉帧,每秒60帧和每秒30帧,如果你的眼睛不够屌不一定看得出来,但是60帧和30帧在玩家看来游戏内容的变化速度是一样的,并不因为30帧就是慢动作60帧是快进
赵4老师 2017-07-03
  • 打赏
  • 举报
回复
提醒:Windows计时精度≈15ms

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧