标题:在VB的picture控件里面画了1000来个圆,做颜色渐变,时间间隔30ms,如何才能 ...
只看楼主
huangjunxing
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2014-8-13
结帖率:50%
 问题点数:0 回复次数:2 
在VB的picture控件里面画了1000来个圆,做颜色渐变,时间间隔30ms,如何才能不需要从新画圆
在VB的picture控件里面画了1000来个圆,做颜色渐变,时间间隔30ms,是不是每次都要重新新画圆,如何才能不需要从新画圆,直接填充颜色,时间快点
Private Sub Form_Load()
Dim r, x0, y0 As Long
r = 10
For x0 = 100 To 10000 Step 30
For y0 = 100 To 10000 Step 30
Picture1.Circle (x0, y0), r, vbBlue

Picture1.FillStyle = vbFSSolid
    Picture1.FillColor = vbRed
Next y0
Next x0
End Sub
搜索更多相关主题的帖子: VB 控件 颜色 时间间隔 画圆 
2017-07-02 23:31
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:0 
你这是画点还是画圆。用你的代码全是显示 点。
你会用 PaintPicture 命令吗?

添加一个 picture2 ,要求 AutoRedrwa 设为真,宽度与 picture1 相等,高度 > 100+R*2 15

Private Sub Command1_Click()
Dim r As Long, x0 As Long, y0 As Long
r = 10
Picture1.FillStyle = vbFSSolid
Picture1.FillColor = vbRed
y0 = 100
For x0 = 100 To 10000 Step 30                   '先画一行,作为样
    Picture2.Circle (x0, y0), r, vbBlue
Next x0

For y0 = 100 To 10000 Step 30                   '按行复制,一行一行的复制,范围统统修正为加上半径
    Picture1.PaintPicture Picture2.Image, 100 - r, y0 - r, 10000 + r, 30 + r, 100 - r, 100 - r, 10000 + r, 30 + r
Next y0
End Sub

Private Sub Picture1_Paint()
'如果picture1 不启用自动重绘(AutoRedrwa)属性时,可以很大情况下加快绘图速度,但无法得到持久性图形
'这个函数为响应重绘图形,手动重绘

Dim r As Long, y0 As Long
r = 10

For y0 = 100 To 10000 Step 30                   '按行复制,一行一行的复制,范围统统修正为加上半径
    Picture1.PaintPicture Picture2.Image, 100 - r, y0 - r, 10000 + r, 30 + r, 100 - r, 100 - r, 10000 + r, 30 + r
Next y0
End Sub

授人于鱼,不如授人于渔
早已停用QQ了
2017-07-03 10:12
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:0 
程序代码:
Option Explicit

Const r = 10

Private Sub Command1_Click()
'测试按钮
Picture1.Cls
Dim x0 As Long

Picture1.FillStyle = vbFSSolid
Picture1.FillColor = vbRed

For x0 = 100 To 10000 Step 30                   '先画一行,作为样
    Picture2.Circle (x0, 100), r, vbBlue
Next x0

Call Picture1_Paint
End Sub

Private Sub Picture1_Paint()
'如果picture1 不启用自动重绘(AutoRedrwa)属性时,可以很大情况下加快绘图速度,但无法得到持久性图形
'这个函数为响应重绘图形,手动重绘

Dim y0 As Long

For y0 = 100 To 10000 Step 30                   '按行复制,一行一行的复制,范围统统修正为加上半径
    Picture1.PaintPicture Picture2.Image, 100 - r, y0 - r, 10000 + r, 30 + r, 100 - r, 100 - r, 10000 + r, 30 + r
Next y0
End Sub

Private Sub Timer1_Timer()

Const 颜色变化值 = 4
Static C As Long

'直接自加的变化
C = C + 颜色变化值
If C > &HFFFFFF Then
    C = &HFFFFFF
End If

Dim x0 As Long

Picture1.FillStyle = vbFSSolid
Picture1.FillColor = C
For x0 = 100 To 10000 Step 30                   '先画一行,作为样
    Picture2.Circle (x0, 100), r, C
Next x0

Call Picture1_Paint

End Sub

授人于鱼,不如授人于渔
早已停用QQ了
2017-07-03 10:54



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-479111-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027451 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved