我想用firemonkey在Delphi中复制https://github.com/jdg/MBProgressHUD的HUD功能。如何制作firemonkey HUD窗口
这就是看起来像iPhone:
的主要问题是如何使窗体半透明&完全删除边框。
我想用firemonkey在Delphi中复制https://github.com/jdg/MBProgressHUD的HUD功能。如何制作firemonkey HUD窗口
这就是看起来像iPhone:
的主要问题是如何使窗体半透明&完全删除边框。
创建您的Firemonkey HD表单,将其设置为Fill.Kind
至bkNone
,并将其设置为Fill.Color
至Null
。此外,将它的Transparency
属性设置为True,并将其设置为BorderStyle
至bsNone
。
创建TRectangle(或任何形状),并将Stroke.Kind
属性设置为bkNone
。将其设置为Fill.Color
至Gray
,它是Opacity
至0.5。
创建一个TAniIndicator
和TLabel
与父母都作为形式。它的Opacity
保持在1.0。另外,还可以创建一个TImage
,并使其与TAniIndicator
的尺寸和位置完全相同。
从那里,当你想改变图像(打勾或类似)和标签文本以简单地改变为你想要显示的任何消息时,这仅仅是在TAniIndicator上使用TFloatAnimation
的情况。理想情况下,您只需创建一个接受字符串或整数作为变量的过程,然后修改文本和指示符/图像以与之匹配。例如;
Procedure TForm1.Process(Mode : Integer);
Begin
if Mode = 1 then
begin
AniIndicator1.Enabled := True;
AniIndicator1.Visible := True;
Image1.Visible := False;
Label1.TextAlign := TTextAlign.taCenter; // Must be called to reset alignment
Label1.Text := 'Loading';
End
else if Mode = 2 then
Begin
AniIndicator1.Enabled := False;
AniIndicator1.Visible := False;
Label1.TextAlign := TTextAlign.taCenter; // Must be called to reset alignment
Image1.Bitmap.LoadFromFile('Tick.png');
Image1.Visible := True;
Label1.Text := 'Complete!';
end;
end;
然后,您可以创建你的主要形式tpanel,然后添加上述形式(包含TAniIndicator, label, and rectangle
)作为子组件。然后,您使用有效的模式变量调用您创建的过程,它将按照您在代码中指示的方式运行。添加更多模式并且我已经使用我自己的某个应用程序完成了一些类似的事情(尽管它与TRectangle
相关,而不是创建指示器)很容易。
请修改您的问题,并发布屏幕截图或图片,说明您正在尝试做什么,而不是仅仅使用外部链接。如果外部链接消失或由于某种原因无法使用,那么将来对其他人而言,这会使你的问题变得毫无意义。谢谢。 :) – 2012-01-27 19:14:00
你不能使半透明的形式,但你可以使它完全透明,并使用半透明(不透明<1)的形状。 – 2012-01-27 20:46:49