标题:实现滚动字幕
只看楼主
ddqx1991
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2016-8-30
结帖率:0
已结贴  问题点数:20 回复次数:6 
实现滚动字幕
我用VB自己做了一个滚动字幕程序(如图,是试运行状态),我可以做到的是让它在Label控件中实现滚动,但是不知道该怎么实现像电视新闻那样用另外的窗体实现字幕滚动显示,求大神告诉怎么写这样的代码,还需要什么控件?因为我是新手,没学过编程,这个程序是我最近自学搞的。
搜索更多相关主题的帖子: 电视 
2016-10-05 18:08
Artless
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:4211
专家分:28888
注 册:2009-4-8
得分:4 
你可以做到的是让它在Label控件中实现滚动
比如Form1的Label1=**那就
Form2.Label1=**

无知
2016-10-06 00:25
Panda2016
Rank: 2
等 级:论坛游民
威 望:2
帖 子:10
专家分:33
注 册:2016-6-26
得分:4 
程序代码:
Option Explicit
Dim content As String
Dim length As Long
Dim pos As Long

Private Sub Form_Load()
    '//预先设定要显示的内容
    content = "静夜思 作者:李白 床前明月光,疑是地上霜。举头望明月,低头思故乡。"
    '//获取内容长度
    length = Len(content)
    '//label1控件,手动调整,如图所示
    '//接着需要选择字体大小
    Set Me.Font = Label1.Font   '//方便借用Form.TextHeight方法
    Dim font_height As Long, font_width As Long, size As Long
    size = Label1.Font.size
    font_height = Me.TextHeight("床前明月光")
    font_width = Me.TextWidth("床前明月光")
    While font_height <= Label1.Height And font_width <= Label1.Width
        size = size + 1
        Label1.Font.size = size
        font_height = Me.TextHeight("床前明月光")
        font_width = Me.TextWidth("床前明月光")
    Wend
    Label1.Font.size = size - 1 '//选择最合适的字体大小
    pos = 1 '//从第一个字符开始读取
End Sub

Private Sub Command1_Click()
    Timer1.Interval = 1000   '1000毫秒执行一次
End Sub

Private Sub Timer1_Timer()
    Dim size As Long, temp As String
    '//每次显示5个长度单位的内容
    size = length - pos '//得到截取的长度大小
    If size < 4 Then    '//当不足5个长度单位时
        temp = Mid(content, pos, size + 1)
        temp = temp & Mid(content, 1, 4 - size)
        pos = 5 - size
    Else
        temp = Mid(content, pos, 5)
        pos = pos + 5
    End If
    Label1.Caption = temp  '//把截取的文本内容显示出来
End Sub


我的也是笨方法,可参考一下。
2016-10-06 00:43
xiangyue0510
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:86
帖 子:934
专家分:5244
注 册:2015-8-10
得分:4 
Timer 修改控件位置。楼上的就是例子
2016-10-06 10:57
ddqx1991
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2016-8-30
得分:0 
回复 3楼 Panda2016
如果我没看错的话,你是直接在From1窗口中实现的滚动,而我想做的是,滚动字幕是一个窗口,后台设置也是一个窗口,那我是不是应该再建一个子窗口?比如MDIFrom1窗口?还是直接在From1窗口中?
2016-10-08 17:42
ZHRXJR
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:125
帖 子:1034
专家分:5519
注 册:2016-5-10
得分:4 
回复 楼主 ddqx1991
“但是不知道该怎么实现像电视新闻那样用另外的窗体实现字幕滚动显示,求大神告诉怎么写这样的代码,还需要什么控件?”
你的这个程序如果需要在另外窗体实现字幕滚动,你可以做二个窗体,第一个窗体是设置字幕的一些参数,在第二个窗体实现滚动,将第一个窗体设置的数据进行存储,第二个窗体调用存储数据即可。
存储数据的方法很多,例如文本文件、数据库、或添加一个Module1.bas模块,在模块中定义几个模块级变量即可,当然还有其他的方法存储数据,不再一一介绍了。
我认为你的这个使用模块是最简单易行的。

请不要选我!!!
2016-10-11 14:17
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
得分:4 
如果是制作类似于大屏幕滚动字幕的,将设置编辑字幕的窗口和显示窗口分开(甚至在一台电脑上编辑,另一台电脑上显示),应该难度不大。如果是做视频显示字幕,则难度大,需要懂DX.
2016-10-12 09:29



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




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

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