在Resize事件里面使用ScaleBy来完成控件与窗体同比例增减
老是不成功有没有成功的代码分享一下不是修改align属性和anchors属性我需要的是连控件里面的字符也跟着变大变小,
就像暴风影音放电影时下面的字幕会随着暴风影音窗体的大小而相同比例地变大变小测试了几个小时都没成功,头痛了,希望CSDN的朋友能帮帮我
老是不成功有没有成功的代码分享一下不是修改align属性和anchors属性我需要的是连控件里面的字符也跟着变大变小,
就像暴风影音放电影时下面的字幕会随着暴风影音窗体的大小而相同比例地变大变小测试了几个小时都没成功,头痛了,希望CSDN的朋友能帮帮我
或许可以尝试对控件进行重画?
现在想问的就是如何去控制
begin
if not (form1.ClientHeight = 50) then
begin
form1.ClientHeight := form1.ClientHeight - 10;
end
else timer2.Enabled := false;
end;procedure TForm1.Timer1Timer(Sender: TObject);
begin
if not (form1.ClientHeight = 350) then
begin
form1.ClientHeight := form1.ClientHeight + 10;
end
else timer1.Enabled := false;
end;procedure TForm1.BitBtn1Click(Sender: TObject);
begin
timer2.enabled := true;
BitBtn2.visible := true;
end;procedure TForm1.BitBtn2Click(Sender: TObject);
begin
timer1.enabled := true;
end;使用TTime 就可以了。你自己试一下看看吧,应该可以达到你要的效果吧!
我试了试,通过获取Form当前的ClientHeight和ClientWidth,然后与先前的ClientHeight和ClientWidth比较,从而执行ScaleBy(或ChangeScale),通过函数中M和D这两个参数的不同来进行缩小或放大(M < D则缩小;M > D 则放大),但是一缩一放之后会发现控件变形了(无法还原到最初的大小),感觉问题还在M和D值的设定.
通过查看ScaleBy类过程的实现以及相关函数的调用,他们的参数都是Integer类型。
昨晚本来还想尝试参照他们的写法重新写一个过程,却发现不好弄,调用太多了,如果真如我那样想,就要写一大堆函数或过程了,显然不实际。
在Resize事件里面写时注意,多次激发时只取最后一次,自己建个变量构造一个缓冲区。
不会吧,我怎么不觉得,
ScaleBy就相当于放大镜和缩小镜一样,怎么会搞乱排版?