線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3191
推到 Plurk!
推到 Facebook!

如何讓PageControl的Tab變成漸層的顏色

尚未結案
Jack0323
初階會員


發表:22
回覆:70
積分:28
註冊:2002-03-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-07-01 00:27:57 IP:211.74.xxx.xxx 未訂閱
請問各位高手 我想要在PageControl的ActivePage上的Tab變成漸層 但由於功力不足 不知有那些大大們可以教導一下 感激不盡
qoo1234
版主


發表:256
回覆:1167
積分:659
註冊:2003-02-24

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-07-01 12:02:19 IP:61.217.xxx.xxx 未訂閱
讓PageControl的Tab變成RGB顏色,漸層還是要想辦法~    給你參考一下: http://www.delphipraxis.net/viewtopic.php?t=6804    網海無涯,學無止境!
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-07-01 13:46:01 IP:61.70.xxx.xxx 未訂閱
將 qoo1234 所提供的網頁中,其中 FillRect(Rect); 是範圍 Rect Brush.Color 是顏色 做一迴圈將 Rect 範圍由左至右、右至左、上至下、下至上或任何方向變化來逐漸增加,最後跟 Rect 的最大範圍一樣,並同時改變顏色,這樣畫完就是漸層的了,由左至右 X = 0 ~ 200; R := 0; G := 0; B := 100 Rect.X :=0 for i := 1 to 50 do begin Rect.X := Rect.X 4; Case TabIndex of 0 : Brush.Color := RGB(R,G,B i); 1 : Brush.Color := RGB(R,G,B i); 2 : Brush.Color := RGB(R,G,B i); else Brush.Color:=clBtnFace; end; FillRect(Rect); end; 其中填色部分改成大概是這樣,就會有漸層,R 是紅色 G 是綠色 B 是藍色 可以同時對 R G B 作漸增,上方只對 B 直作漸增,又RG為0,所以會是一個藍色的條狀漸增,至於詳細顏色成果,你要自己多 Try 幾次 記住 RGB 三色的值在 0 ~ 255 之間,可別超過,否則會無法預期結果
Jack0323
初階會員


發表:22
回覆:70
積分:28
註冊:2002-03-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-07-01 17:04:28 IP:211.74.xxx.xxx 未訂閱
syntax 兄: 很抱歉 再請教一個問題 就是在PageControl1DrawTab事件中Rect没有Rect.x的項目 這時候應該怎麼改變讓坐標可以改變 而重畫產生漸層的效果 要如何才能做 Recr.x := Rect.x 4
Jack0323
初階會員


發表:22
回覆:70
積分:28
註冊:2002-03-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-07-01 23:00:25 IP:211.74.xxx.xxx 未訂閱
再請問各位前輩 我寫的程式是這樣 但是還是無法變成有漸層色彩 不知那裡寫錯了 還請各位前輩指導一下 procedure TForm1.PageControl1DrawTab(Control: TCustomTabControl; TabIndex: Integer; const Rect: TRect; Active: Boolean); var TabCaption : String; TabRect : TRect; i :Integer; R,G,B:Byte; begin TabRect:=Rect; InflateRect(TabRect,-4,-2); TabCaption:=TPageControl(Control).Pages[TabIndex].Caption; With Control.Canvas do begin TabRect.Top := 0 ; for i := 1 to 50 do begin TabRect.Top := Rect.Top 4; if Active then Brush.Color := RGB(0,0,B i) else Brush.Color:=clBtnFace; Brush.Style:=bsSolid; FillRect(TabRect); end; Brush.Style:=bsClear; DrawText(Handle,PChar(TabCaption),-1,TabRect,dt_singleline dt_left dt_vcenter); end; end;
weber
初階會員


發表:24
回覆:56
積分:26
註冊:2002-03-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-07-02 01:18:51 IP:61.217.xxx.xxx 未訂閱
procedure TForm1.PageControl1DrawTab(Control: TCustomTabControl; TabIndex: Integer; const Rect: TRect; Active: Boolean); var TabCaption : String; TabRect,OldRect : TRect; i :Integer; R,G,B:Byte; begin TabRect:=Rect; OldRect:=Rect; InflateRect(TabRect,-4,-2); TabCaption:=TPageControl(Control).Pages[TabIndex].Caption; With Control.Canvas do begin TabRect.Top := 0 ; for i := 1 to 20 do begin TabRect.Top := Rect.Top i; TabRect.Bottom := TabRect.Top 1; if Active then Brush.Color := RGB(0,0,B i*10) else Brush.Color:=clBtnFace; Brush.Style:=bsSolid; FillRect(TabRect); end; Brush.Style:=bsClear; DrawText(Handle,PChar(TabCaption),-1,OldRect,dt_singleline dt_left dt_vcenter); end; end;
weber
初階會員


發表:24
回覆:56
積分:26
註冊:2002-03-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-07-02 01:22:19 IP:61.217.xxx.xxx 未訂閱
還有別忘了把PageControl1的OwnerDraw 屬性設 True.
Jack0323
初階會員


發表:22
回覆:70
積分:28
註冊:2002-03-13

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-07-02 09:39:15 IP:211.74.xxx.xxx 未訂閱
感謝各位仁兄的不吝賜教了 有漸層的樣子了
系統時間:2024-05-04 5:20:08
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!