FireMonkey 界面的玩法

FireMonkey 用來做 APP 的一個特點就是做界面通吃各平臺,因爲它自己畫圖。因爲自己畫圖,所以如果 APP 需要一些效果,也可以程序員自己搞定,通過組合各種形狀,無需找第三方控件。

先看一個效圖圖:

 

 

第一個圖是界面元素,第二個圖中的圓圈發光,是因爲鼠標點下去(或者手指頭觸摸)。

這種效果,我摸索了一下,發現用 FireMonkey 完全可以在設計期用現場控件堆出來。

首先說這個圓圈:

1. 放一個 TLayout 作爲圓圈的托盤。

2. 在這個 TLayout 上面,放兩個 TCircle 圓圈控件。設置其 Align 爲 Client,充滿這個 TLayout。注意 Layout 的長寬要一樣。

2.1. 設置兩個圓圈的屬性:Fill 屬性裏面的子項目 Kind 設置爲 none,這樣圓圈沒有填充顏色。

2.2. 圓圈1的 Stroke 屬性的子項目 Color 設置爲 #FF3592F6,藍色;Thickness 設置爲 6,粗線條,模糊後,就是圖中的發光。

2.3. 圓圈2的 Stroke 屬性的子項目 Color 設置爲 Azure,淺藍色;Thickness 設置爲默認的 1,細線條。也就是圖中圓圈的亮線。

3. 拖一個 TBlurEffect 過來,在 Delphi IDE 左邊的 Struct 窗口裏面,把這個 TBlurEffect 拖到第一個圓圈下面。效果就算第一個圓圈模糊了。在黑色背景上,就是圓圈發光。

3.1. 這時候你看到模糊的發光在線條圓圈的裏面。我想要的效果是線條圓圈內外都發光。辦法是,設置圓圈2的 Margin 屬性,修改其4個值,在設計期,逐漸增大那4個值(Top, Bottom, Left, Right),這個 Align 爲 Client 的圓圈會逐漸縮小,縮小到合適的位置,就有了想要的效果。

4. 拖一個 TGlowEffict 過來,在 Struct 窗口裏,把它拖到作爲容器托盤的 Layout 下面。如果設置它的 Enabled 爲 True 則圓圈就顯示爲圖2的效果。設計期設置爲 False。

5. 代碼:FireMonkey 的每個元素,比如 TCircle 或者 TLayout 都有一個 HitTest 屬性,這個屬性設置爲 True 則它可以響應觸摸或者鼠標。因此,對這個圓圈,隨便選擇一個,比如選擇圓圈 2,在屬性面板裏,切換到 Events ,找到它的 OnMouseDown 事件,鼠標雙擊,IDE 幫你創建 OnMouseDown 事件的代碼框架,在裏面填寫:GlowEffict1.Enabled := True;  同理,在 OnMouseUp 事件方法裏面填寫 GlowEffict1.Enabled := False;

6. 黑色背景:我在這裏採用深藍色背景。拖一個 TRectangle 過來,設置它的 Align 屬性爲 Contant,這樣它會充滿屏幕,但不會搶容器位置。鼠標右鍵點擊它,在下拉菜單裏面選擇 Control -- Send to back 把它放到底層去。

7. 在 WINDOWS 底下運行這個程序,可以看到效果。編譯爲 Android 讓它跑到手機上,效果相同。

然後是三角形,視覺效果相同,因此做法相同。但 FireMonkey 木有三角形控件,怎麼辦?

FireMonkey 有一個控件叫做 TPath,路徑控件。它支持 SVG 這樣的矢量圖數據。

1. 拖一個 Layout 過來作爲容器;

2. 拖2個 TPath 過來,放到上述 Layout 容器裏面,設置 Align 爲 Client;

3. 三角形的實現:Path 控件在 IDE 的屬性面板裏面,有個 Data 屬性,拉開,底下還有個子項目叫 Data,在裏面直接填入:M250,150 L150,350 L350,350 Z  這一串字符,Path 就呈現爲三角形了。

4. 其它視覺效果,按照上面圓圈的做法,同樣做一遍。

5. 上述三角形是朝上的。想要朝下的,用鼠標點擊,選中作爲容器托盤的 Layout,按 Ctr-C 複製,再按 Ctr-V 粘貼,界面上就再多一個包含了三角形的 Layout,在屬性面板裏面設置這個 Layout 的 RotationAngle 爲 180,它就旋轉 180度,三角形朝下了。

然後,是擺位置。我想要的效果是上下兩個三角形,中間是圓圈。三個圖都位於屏幕水平方向的中間。不管屏幕大小,相對位置都是這樣。擺位的方式是依賴 Align 屬性。

1. 拖三個 Layout 作爲擺位的容器。其 Align 設置爲:A. Top;B. VertCenter;C. Bottom;

2. 頂部和底部的 Layout 不想讓它貼屏幕的上下邊,方法是設置其 Margin 屬性的 Top 和 Bottom 值。

3. 把圓圈和三角形的 Layout 托盤,在 IDE 左邊的 Struct 窗口裏面,拖到對應的擺位容器 Layout 下面。

4. 設置三個圖形的托盤 Layout 的 Align 屬性爲 Center。

這樣設置下來,不管屏幕大小,它都能正確顯示相對位置。

這樣的一個界面,如果把它放進一個 FireMonkey 的 TFrame,就相當於自己組合出了一個通用的控件,需要的地方,拖這個 Frame 過去擺進 Form 就有了,可以重複使用。

搞定。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章