gpt4 book ai didi

delphi - Delphi中的效果字幕标签

转载 作者:行者123 更新时间:2023-12-03 19:27:41 25 4
gpt4 key购买 nike

我正在为标签上的字幕效果做一个功能,标签交给了它,我放了长文本并禁用了“ AutoSize”属性。
字幕效果是自下而上的,我拥有的代码是:

procedure TForm1.Form_EffectsClick(Sender: TObject);
begin
Label1.Caption := 'This is right scrolling text' + sLineBreak +
'This is right scrolling text' + sLineBreak + 'This is right scrolling text'
+ sLineBreak + 'This is right scrolling text' + sLineBreak +
'This is right scrolling text' + sLineBreak + 'This is right scrolling text'
+ sLineBreak + 'This is right scrolling text' + sLineBreak +
'This is right scrolling text' + sLineBreak + 'This is right scrolling text'
+ sLineBreak + 'This is right scrolling text' + sLineBreak +
'This is right scrolling text' + sLineBreak + 'This is right scrolling text'
+ sLineBreak + 'This is right scrolling text' + sLineBreak +
'This is right scrolling text' + sLineBreak;
test.Enabled := true;
end;

procedure TForm1.testTimer(Sender: TObject);
begin
Label1.Top := Label1.Top - 10;
if Label1.Top <= 0 - Label1.Top then
begin
Label1.Top := Label1.Height;
end;
end;


例子 :

enter image description here

enter image description here

问题是它开始和结束很差,开始低于正常值并且结束不完整,因为它显示一半,然后重新启动而没有显示其他部分

问题是什么 ?

最佳答案

永远不要通过移动VCL控件来创建动画。而是在表单或自定义控件的OnPaint处理程序中手动绘制动画(使用GDI)。如果您是我,则将创建TMarqueeLabelTCustomControl后代。

无论如何,您的逻辑很奇怪。 Label1.Top <= 0 - Label1.Top等效于Label1.Top <= 0。也许你是说

if Label1.Top < -Label1.Height then
Label1.Top := ClientHeight


弄清楚为什么这是理想的逻辑,这很容易。 (当整个文本消失在屏幕顶部之外时,这将重新启动动画,而新的动画将以完全隐藏在屏幕下方的文本开始。我假设这就是您想要的。)

关于delphi - Delphi中的效果字幕标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34578079/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com