如何实现Panel渐变颜色? ( 积分: 20 )

  • 主题发起人 主题发起人 halqj
  • 开始时间 开始时间
H

halqj

Unregistered / Unconfirmed
GUEST, unregistred user!
如何实现Panel渐变颜色?横向渐变和纵向渐变
 
panel 没有 canvas, 必须创建一个canvas才能绘制渐变色的画面
 
本来我想放到我的技巧程序里面,但是一想,
不知不觉已经放了:
访问:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3722399
你可以收到满意的答案。
 
To凤冠坡
我收到了压缩包,谢谢,不过里面缺少一项目录。
有目录吗?还是希望贴一些代码
 
很简单。这分我拿定了。
TCanvas *pCanvas = new TCanvas();
pCanvas->Handle = GetDC(pDestPanel->Handle);
ARect=pDestPanel->GetClientRect();
GradientFillCanvas(pCanvas, clWhite,TColor(0x00FFCFC1),ARect, gdHorizontal);
 
[?] to 小笨象:给个实例,兄弟我测试不通过,不过还的谢你,因你给了新思路。
 
呵呵。如果有新的进展能不能贴出来我也想看看
 
分数不多,但很实用,各位看官都来支持一下这个问题
 
RzPanel可以轻松实现
 
最好别重绘,谁会这方面的代码,我已经在线等了好几天了
 
不懂,学习,帮你顶一下贴,希望看到怎么解决
 
本来以为你搞定了.pCanvas是panel上的一个paintbox.canvas
procedure TFrmMain.PanelGr(InitializeColor, TerminalColor: TColor;panel:Tpanel;pCanvas:TCanvas); //panel背景渐变
var
ARect : TRect;
FillNumber,i:integer;
RED,Green,Blue:integer;
begin
for FillNumber := 0 to panel.Height-1 do
begin
Red := GetRvalue(InitializeColor) + Trunc(FillNumber * (GetRvalue(TerminalColor) - GetRvalue(InitializeColor)) / (panel.Height - 1));
Green := GetGvalue(InitializeColor) + Trunc(FillNumber * (GetGvalue(TerminalColor) - GetGvalue(InitializeColor)) /(panel.Height - 1));
Blue := GetBvalue(InitializeColor) + Trunc(FillNumber * (GetBvalue(TerminalColor) - GetBvalue(InitializeColor)) / (panel.Height - 1));

pCanvas.Pen.Color := RGB(Red, Green, Blue);
pCanvas.MoveTo(0, FillNumber);
pCanvas.LineTo(panel.Width, FillNumber);
end;
end;
这是我写的函数,自己改改就可以用了
 
多人接受答案了。
 
后退
顶部