畫漸變函式

2021-03-31 17:41:02 字數 1512 閱讀 9178

**

procedure colorful(_sender:tcanvas;_c1,_c2:tcolor;_width,_height:integer;_mode:integer);

var i:integer;rct:trect;r1,g1,b1,r2,g2,b2,r3,g3,b3:byte;

begin

with tcanvas(_sender) do begin

r1:=byte(_c1);

g1:=byte(_c1 shr 8);

b1:=byte(_c1 shr 16);

r2:=byte(_c2);

g2:=byte(_c2 shr 8);

b2:=byte(_c2 shr 16);

case _mode of

1:begin

for i:=0 to _width do begin

if r1>r2 then r3:=r1-muldiv(i,r1-r2,_width) else r3:=r1+muldiv(i,r2-r1,_width);

if g1>g2 then g3:=g1-muldiv(i,g1-g2,_width) else g3:=g1+muldiv(i,g2-g1,_width);

if b1>b2 then b3:=b1-muldiv(i,b1-b2,_width) else b3:=b1+muldiv(i,b2-b1,_width);

brush.color:=rgb(r3,g3,b3);

rct:=rect(i,0,i+1,_height);

fillrect(rct);

end;

end;

2:begin

for i:=0 to _height do begin

if r1>r2 then r3:=r1-muldiv(i,r1-r2,_height) else r3:=r1+muldiv(i,r2-r1,_height);

if g1>g2 then g3:=g1-muldiv(i,g1-g2,_height) else g3:=g1+muldiv(i,g2-g1,_height);

if b1>b2 then b3:=b1-muldiv(i,b1-b2,_height) else b3:=b1+muldiv(i,b2-b1,_height);

brush.color:=rgb(r3,g3,b3);

rct:=rect(0,i,_width,i+1);

fillrect(rct);

end;

end;

end;

setbkmode(handle,windows.transparent);

end;

end;

用法procedure tform1.formpaint(sender: tobject);

begin

colorful(self.canvas,clskyblue,clwhite,self.width,self.height,2);

//1是橫著,2是豎著

end;

線性漸變畫刷

第一種 1.首先先繪製乙個矩形 然後在button 裡定義乙個background,再用乙個線性漸變來寫他的樣式 button height 60 width 120 margin 87,200,86.6,10.4 button.background lineargradientbrush star...

canvas畫矩形(包括漸變)

index.html內容 你的瀏覽器不支援 html5 index.js內容 function x 起點x座標 param y 起點y座標 param width 寬度 param height 高度 param linewidth 線寬 param color 邊框顏色,如果是陣列,則漸變 par...

GDI 學習之線性漸變畫刷

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!我發現使用gdi 來製作畫圖工具的調色盤極為方便 這個工作如果讓gdi來做不知要寫多少 下面我們學習一下gdi 的線性漸變畫刷 lineargradientbrush類的用法,具體 如下 cpp view plain copy print?cdc ...