| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1083 人关注过本帖
标题:求一个文本水平移动的小程序,别闪烁啊
只看楼主 加入收藏
seremban
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-10-13
收藏
 问题点数:0 回复次数:5 
求一个文本水平移动的小程序,别闪烁啊
刚学VB,要做个作业啊。急急急
1:一个水平文本滚动条,上面从左到右循环滚动显示文本: 比如:‘欢迎xxx来我校访问,xxx是著名的计算机科学家,将给我们讲座。。。’

2:文本从文件读取

3:当文本比较长的时候,屏幕不要闪烁。我用picturebox控件的move,但是文本长了闪烁不停啊,用两个picturebox控件交替显示好像要好点,不知道有没有更好的办法啊,最后有源代码,让我先应付过去啊
搜索更多相关主题的帖子: 文本 水平 救命 闪烁 
2008-11-04 06:52
永夜的极光
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2721
专家分:1
注 册:2007-10-9
收藏
得分:0 
先把你做的拿上来看看,据我理解,应该设置PictureBox的AutoRedraw属性为True就可以不闪了

从BFS(Breadth First Study)到DFS(Depth First Study)
2008-11-04 10:49
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4941
专家分:30047
注 册:2008-10-15
收藏
得分:0 
Private Sub Timer1_Timer()
Label1.Left = Label1.Left + 15
If Label1.Left = Me.ScaleWidth  Then
    Label1.Left = -Label1.Width
End If
End Sub

窗体上一个label1 ,属性AutoSize设True
内容,自己想办法。
一个,Timer1,属性 Timer1 设 1

偶尔有点闪烁感。

[[it] 本帖最后由 风吹过b 于 2008-11-4 16:44 编辑 [/it]]

授人于鱼,不如授人于渔
早已停用QQ了
2008-11-04 16:41
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4941
专家分:30047
注 册:2008-10-15
收藏
得分:0 
太长了还有点闪烁,郁闷了。

授人于鱼,不如授人于渔
早已停用QQ了
2008-11-04 16:43
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4941
专家分:30047
注 册:2008-10-15
收藏
得分:0 
也知道一点原因。
VB,对于绘图很慢很慢。所以会造成闪烁。

不知加一个 DoEvents 会不会好一点。

授人于鱼,不如授人于渔
早已停用QQ了
2008-11-04 16:49
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4941
专家分:30047
注 册:2008-10-15
收藏
得分:0 
晚上重新测试,你自己看效果吧。
窗体上,放一个 Label1
一个 Picture1
一个 Timer1
属性在  Form_Load()进行的设置

程序代码:
Option Explicit

Const y1 = 100
Const y2 = 1000
Const y3 = 2000
Const y4 = 3000

Dim wzx As Long
Dim wtext As String
Dim wzwidth As Long

Private Sub Form_Load()
wtext = "当文本比较长的时候,屏幕不要闪烁。我用picturebox控件的move,但是文本长了闪烁不停啊,用两个picturebox控件交替显示好像要好点,不知道有没有更好的办法啊,最后有源代码,让我先应付过去啊"

Label1.AutoSize = True      '设置自动大小
Label1.Caption = wtext      '写入文字

wzwidth = Label1.Width      '取宽度
    
Picture1.AutoRedraw = True      '设置持久输出
Picture1.BorderStyle = 0        '无边框
Picture1.BackColor = &H8000000F '背景与窗体相同
Picture1.Width = wzwidth        '设宽度
Picture1.Print wtext            '输出文本

Timer1.Interval = 10            '定时器

Label1.Move 0, y1                 '坐标
Picture1.Move 0, y2               '坐标

End Sub


Private Sub Timer1_Timer()

'坐标变化
wzx = wzx + 15
If wzx > Me.ScaleWidth Then wzx = -wzwidth

'方法一
Label1.Left = wzx

'方法二
Me.Line (0, y3)-(Me.ScaleWidth, y3 + 500), Me.BackColor, BF         '清屏
Me.PaintPicture Picture1.Image, wzx, y3

'方法三
Me.Line (0, y4)-(Me.ScaleWidth, y4 + 500), Me.BackColor, BF         '清屏
Me.CurrentX = wzx
Me.CurrentY = y4
Me.Print wtext

'方法四
Picture1.Left = wzx 

End Sub



[[it] 本帖最后由 风吹过b 于 2008-11-4 23:11 编辑 [/it]]

授人于鱼,不如授人于渔
早已停用QQ了
2008-11-04 23:09
快速回复:求一个文本水平移动的小程序,别闪烁啊
数据加载中...
 
   



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

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