VB一个平滑的字幕滚动控件(开源)

2024-04-30 10:08

本文主要是介绍VB一个平滑的字幕滚动控件(开源),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述
'添加一个ActiveX控件工程,代码如下:
Option Explicit
'自定类
Public Enum TDO_Text '滚动方向
[Right to left] = 0 '由右向左滚动
[Left to right] = 1 '由左向右滚动
End Enum

Private Type Font
Zti As String '字体
Zxing As String '字形
Dxiao As Long '大小
End Type

Dim Rolling As Integer '滚动方向:[0]由右向左滚动 [1]由左向右滚动
Private WithEvents Timer As Timer
Dim Buj As Double '记次
Dim Wordlen As Long '文本长度
Dim Wordhigh As Long '文本高度
Dim Txt As String '文本
Dim Zti As String '字体
Dim Speed As Long '速度

Dim Mf As Form, Lx As Long, Tt As Long ’
Dim L As Long, T As Long, W As Long, H As Long

Private Sub Timer_Timer()
Dim Ctxt As String
If Rolling = 0 Then
If (Buj + Wordlen) <= 0 Then
Buj = UserControl.ScaleWidth - 23
Else
Buj = Buj - Speed
End If
Ctxt = Txt
ElseIf Rolling = 1 Then
If Buj >= UserControl.ScaleWidth - 23 Then
Buj = -Wordlen
Else
Buj = Buj + Speed
End If
Ctxt = StrReverse(Txt)
End If
UserControl.Cls
Call Lucency(Mf)
UserControl.CurrentX = Buj: UserControl.CurrentY = 30
UserControl.Print Ctxt
End Sub

Private Sub UserControl_Initialize()
Set Timer = UserControl.Controls.Add(“VB.Timer”, “Timer”)
UserControl.AutoRedraw = True
UserControl.FontSize = 9
Speed = 0
Rolling = 0
End Sub

Public Property Get Content() As String
Content = Txt
End Property

Public Property Let Content(ByVal vNewValue As String)
Txt = Replace(vNewValue, vbCrLf, “”)
If Speed > 0 Then Timer.Interval = 1 Else Timer.Interval = 0
Wordlen = UserControl.TextWidth(Txt)
End Property

Public Sub Lucency(F As Form) ’
Set Mf = F
On Error Resume Next
L = UserControl.Extender.Left
T = UserControl.Extender.Top
W = UserControl.Extender.Width
H = UserControl.Extender.Height
UserControl.AutoRedraw = True
UserControl.PaintPicture F.Image, 0, 0, W, H, L, T, W, H
UserControl.Line (0, 0)-(UserControl.ScaleWidth - 8, UserControl.ScaleHeight - 8), 255, B
End Sub

Private Sub UserControl_Resize()
UserControl.Cls
UserControl.Line (0, 0)-(UserControl.ScaleWidth - 8, UserControl.ScaleHeight - 8), 255, B
UserControl.Height = UserControl.TextHeight(Txt) + 80
End Sub

Public Property Get Direction() As TDO_Text
Direction = Rolling
End Property

Public Property Let Direction(ByVal vNewValue As TDO_Text)
Rolling = vNewValue
If vNewValue = 0 Then
Buj = UserControl.ScaleWidth - 23
ElseIf vNewValue = 1 Then
Buj = -Wordlen
End If
PropertyChanged “Direction”
End Property

'加载和存储属性值-------------------------------------------------------------------
Private Sub UserControl_ReadProperties(PropBag As PropertyBag) '从存储器中加载属性值
Speed = PropBag.ReadProperty(“Interval”, Speed)
Rolling = PropBag.ReadProperty(“Direction”, Rolling)
End Sub

Private Sub UserControl_WriteProperties(PropBag As PropertyBag) '将属性值写到存储器
Call PropBag.WriteProperty(“Interval”, Speed, 0)
Call PropBag.WriteProperty(“Direction”, Rolling, 0)

End Sub
'------------------------------------------------------------------------------------

Public Property Get Interval() As Long
Interval = Speed
End Property

Public Property Let Interval(ByVal vNewValue As Long)
Speed = vNewValue
PropertyChanged “Interval”
End Property

'Form==============================================================
'将控件添加到窗体,再添加一个Combo1下拉框控件,代码如下:
Private Sub Combo1_Click()
Dynamic1.Direction = Combo1.Text
End Sub

Private Sub Form_Load()
Dynamic1.Lucency Me
Dynamic1.Content = “国庆黄金周,很多人都在旅途中。这几年,自由行也渐渐成了主流出行方式。随着导游自由执业逐渐放开,网约导游也开始进入大家的视线中。”
End Sub

'按F5运行,Combo1的数值:0向左边滚动,1向右边滚动。

这篇关于VB一个平滑的字幕滚动控件(开源)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/948582

相关文章

html 滚动条滚动过快会留下边框线的解决方案

《html滚动条滚动过快会留下边框线的解决方案》:本文主要介绍了html滚动条滚动过快会留下边框线的解决方案,解决方法很简单,详细内容请阅读本文,希望能对你有所帮助... 滚动条滚动过快时,会留下边框线但其实大部分时候是这样的,没有多出边框线的滚动条滚动过快时留下边框线的问题通常与滚动条样式和滚动行

WinForms中主要控件的详细使用教程

《WinForms中主要控件的详细使用教程》WinForms(WindowsForms)是Microsoft提供的用于构建Windows桌面应用程序的框架,它提供了丰富的控件集合,可以满足各种UI设计... 目录一、基础控件1. Button (按钮)2. Label (标签)3. TextBox (文本框

uniapp小程序中实现无缝衔接滚动效果代码示例

《uniapp小程序中实现无缝衔接滚动效果代码示例》:本文主要介绍uniapp小程序中实现无缝衔接滚动效果的相关资料,该方法可以实现滚动内容中字的不同的颜色更改,并且可以根据需要进行艺术化更改和自... 组件滚动通知只能实现简单的滚动效果,不能实现滚动内容中的字进行不同颜色的更改,下面实现一个无缝衔接的滚动

Qt中QGroupBox控件的实现

《Qt中QGroupBox控件的实现》QGroupBox是Qt框架中一个非常有用的控件,它主要用于组织和管理一组相关的控件,本文主要介绍了Qt中QGroupBox控件的实现,具有一定的参考价值,感兴趣... 目录引言一、基本属性二、常用方法2.1 构造函数 2.2 设置标题2.3 设置复选框模式2.4 是否

Qt中QUndoView控件的具体使用

《Qt中QUndoView控件的具体使用》QUndoView是Qt框架中用于可视化显示QUndoStack内容的控件,本文主要介绍了Qt中QUndoView控件的具体使用,具有一定的参考价值,感兴趣的... 目录引言一、QUndoView 的用途二、工作原理三、 如何与 QUnDOStack 配合使用四、自

无需邀请码!Manus复刻开源版OpenManus下载安装与体验

《无需邀请码!Manus复刻开源版OpenManus下载安装与体验》Manus的完美复刻开源版OpenManus安装与体验,无需邀请码,手把手教你如何在本地安装与配置Manus的开源版OpenManu... Manus是什么?Manus 是 Monica 团队推出的全球首款通用型 AI Agent。Man

禁止HTML页面滚动的操作方法

《禁止HTML页面滚动的操作方法》:本文主要介绍了三种禁止HTML页面滚动的方法:通过CSS的overflow属性、使用JavaScript的滚动事件监听器以及使用CSS的position:fixed属性,每种方法都有其适用场景和优缺点,详细内容请阅读本文,希望能对你有所帮助... 在前端开发中,禁止htm

C#实现WinForm控件焦点的获取与失去

《C#实现WinForm控件焦点的获取与失去》在一个数据输入表单中,当用户从一个文本框切换到另一个文本框时,需要准确地判断焦点的转移,以便进行数据验证、提示信息显示等操作,本文将探讨Winform控件... 目录前言获取焦点改变TabIndex属性值调用Focus方法失去焦点总结最后前言在一个数据输入表单

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

金融业开源技术 术语

金融业开源技术  术语 1  范围 本文件界定了金融业开源技术的常用术语。 本文件适用于金融业中涉及开源技术的相关标准及规范性文件制定和信息沟通等活动。