按“句”滚动字幕的提词器程序设计--按“句”提示和“语速”调节

本文介绍了如何在RTF文本框中实现按句提示和自动滚动功能,以及如何通过编程控制语速。核心是利用RT1.Span方法按标点分割文本,并通过Timer控件调整每个字保持的时间来实现语速调节。同时,文章强调了禁用文本框和锁定内容以防止干扰程序运行的重要性。
摘要由CSDN通过智能技术生成

 

     从2个插图可以看出,文本中红色的句子(按标点分割文本)指示了“当前的句子”。这使得你的眼光搜索起来非常迅捷;红字下面逐字延伸的下划线,使得你的“语速”可以把握得相当精准。
而在“下划线”延伸到标点符号之前,整个文本是“静止”的。就是说,滚动的时机,是由你调节好的“语速”来决定的。
下面是2个关键问题:
1.“按句提示(红色)”和★文本自动向上滚动。用什么方法来把文本按“指定的标点”分割为“句”呢?
   核心的语句是:     RT1.Span  ",。?!;", True, True      
      其中RT1是 “RTF文本框”,Span 是它的方法, 双引号内是“指定的字符”。   功能是:寻找指定的字符(标点),并选中经过的字。
例如:    ……午茶和晚茶。早茶通常清晨4时开市,很多顾客……
   当光标(起始点)在“。”和“早”之间时,执行这行语句后,会★自动选中 “早茶通常清晨4时开市”这10个字。而光标(起始点)★仍然在“。”和“早”之间。
'★★★如果这个“标点”这时正“躲”在文本框下面看不见的地方,文本就会★自动向上滚动,直到它“出来”。
2.语速问题:每分钟字数的计算与调节
  《提词器》必须要能对“语速”进行设置和调节。(通过预演可以★选定合适的语速)“语速”的单位通常是:字数/分钟。而在我这样的“提词器”,需要知道的是:“当前句子(红色)”保持的“时间”,单位是:毫秒,它等于:每个字保持的时间(毫秒/字)乘以这句子的“字数”。我们不能调节“字数”(乘数),但可以调节“被乘数”。它与“语速”之间是什么关系呢?可以看出,两者正好是“倒数”关系。
    例如: “语速”为 150字/1分钟,它的倒数是 1分钟/150字=60000毫秒/150字=60000\语速(毫秒/字),正是前面说的“被乘数”。如果我们的 Timer 控件的★“事件”是“1字1次”的话,“每个字保持的时间(毫秒/字)”不就是★Timer控件的Interval属性吗?如果我们用 H(H是个变量) 表示“语速”的话,Timer的Interval 就等于 600000\H。改变 H 的值就可以调节“每个字保持的时间(毫秒/字)”了。
当Timer 控件计数的字数累加值超过该句的“字数”时,启动了相关的过程,红色就会自动“转移”到下一句去了。
★要注意: RT1文本框的 Enabled 属性为 False。所以,它的“滚动条”、窗口等等都无法用鼠标去单击、使用。(如果允许使用的话,程序立刻大乱)
 而且Text1本框的 Locked  属性为 True, 所以,它的“内容”无法编辑改动。(不允许改动,仅是借它作为操作平台)
以上2个关键问题解决了,编制这个程序也就没有什么难度了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值