如何讓PageControl的Tab變成漸層的顏色 |
尚未結案
|
Jack0323
初階會員 發表:22 回覆:70 積分:28 註冊:2002-03-13 發送簡訊給我 |
|
qoo1234
版主 發表:256 回覆:1167 積分:659 註冊:2003-02-24 發送簡訊給我 |
|
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
將 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 發送簡訊給我 |
|
Jack0323
初階會員 發表:22 回覆:70 積分:28 註冊:2002-03-13 發送簡訊給我 |
再請問各位前輩 我寫的程式是這樣
但是還是無法變成有漸層色彩
不知那裡寫錯了
還請各位前輩指導一下 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 發送簡訊給我 |
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 發送簡訊給我 |
|
Jack0323
初階會員 發表:22 回覆:70 積分:28 註冊:2002-03-13 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |