如何動態變更大小 |
答題得分者是:RedSnow
|
李國維
高階會員 發表:42 回覆:287 積分:235 註冊:2003-02-07 發送簡訊給我 |
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
李國維 您好: 我看過站上的不少相關討論,但是和您一樣都沒看到一個方式能獲得完美的比例,我多方測試後找到一個似乎被大家都忽略掉的方法,雖然談不上 "完美",但是卻比先前我看到的方式都要來得簡單,而且效果也較那些繁瑣的方式來得好,您試試看吧:
// 請注意!字型最好是使用向量字 (TureType 或 OpenType) void __fastcall TForm1::Panel1Resize(TObject *Sender) { Label1->Font->Height = -(Label1->Height-1); }由上面範例可以看出來,我使用的方法不是去改變字型的 Size,而是改變它的 Height,如果您對上述範例顯示出來的字型比例不滿意的話,可以試著調整那個 Height 值的計算式,以找出最滿意的顯示效果。 7 天天敲鍵盤 v 時時按滑鼠 8 |
李國維
高階會員 發表:42 回覆:287 積分:235 註冊:2003-02-07 發送簡訊給我 |
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
|
李國維
高階會員 發表:42 回覆:287 積分:235 註冊:2003-02-07 發送簡訊給我 |
RedSnow 您好:
其實我無法處理的部份您已經幫我解決了.因為我的程式比較複雜所以我將有關縮放的部份程式碼PO上.
//我拉了一各Panel1元件.然後拉了一各Label1元件在Panel1上. //Label1的字形大小設為36方便觀察 void __fastcall TForm1::Button1Click(TObject *Sender) { float fZoomSize = 0.9;//大於1為放大.小於1為縮小 Panel1->Height *= fZoomSize; Panel1->Width *= fZoomSize; Label1->Top *= fZoomSize; Label1->Left *= fZoomSize; Label1->Width *= fZoomSize; Label1->Height *= fZoomSize; Label1->Font->Height *= fZoomSize; } //--------------------------------------------------------------------------- 引言: 李國維 您好: 我回頭再看了一下您的問題,發現我的重點好像有點抓錯....,您問題的重點是在 Label 的縮放?還是字型的縮放?原先我以為您已經做好物件的相關縮放動作,因此在前一篇提供的那段範例是針對字型縮放而設的。 如果我的重點確實抓錯了,可否請您再描述一下您現在要處理的版面配置與欲達到的效果 (如果方便的話,看是不是能貼張圖上來參考一下)? 7 天天敲鍵盤 v 時時按滑鼠 8 |
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
李國維 您好: 好在沒誤會您的題意,我原先測試時的設定如下:< class="code">Panel1->AutoSize = false;
Panel1 的 Anchors 四個子屬性 (akLeft, akTop, akRight, akBottom) 全部設為 true
Label1->Align = alClient;
Label1->Alignment = taCenter;
Label1 使用字型為 Arial然後直接以滑鼠調整 Form 的大小,以觀察上述元件與字型的變化。 我剛才使用您的設定方式來做測試,但是多設一組相同的元件,一組延用您的方式來設定字型大小 (用比例來算出要設定的高度),另一組沿用我的方式來設定字型大小 (直接設成與 Label 的高度相同),結果好像 Font 的 Height 不用百分比來計算,而直接設成與 Label 的高度相同時,整體視覺感受會比較好些,您參考看看吧:
// 我把 Label 的 Align 屬性設為 alClient 了 void __fastcall TForm1::Button1Click(TObject *Sender) { float fZoomSize = 0.9;//大於1為放大.小於1為縮小 Panel1->Height *= fZoomSize; Panel1->Width *= fZoomSize; Label1->Font->Height *= fZoomSize; Panel2->Height *= fZoomSize; Panel2->Width *= fZoomSize; Label2->Font->Height = Label2->Height; }7 天天敲鍵盤 v 時時按滑鼠 8 |
李國維
高階會員 發表:42 回覆:287 積分:235 註冊:2003-02-07 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |