我有一个问题:
窗体的颜色是否能用渐变色,如从上到下其颜色从白到黑,可以得话,该怎么实现????
窗体的颜色是否能用渐变色,如从上到下其颜色从白到黑,可以得话,该怎么实现????
解决方案 »
- API函数怎么定义
- 一个QQ自动聊天软件 来帮忙看看为什么没有用
- 关于邮政日戳的处理
- 请问一个采鸟的问题:对于分布式数据库,如何连接分布在不同位置的数据库表?
- 急呀!!dblookupcombobox控件怎样设置默认值呀?----------在先等待
- 请问哪位大虾能提供一些抓屏的原程序
- 有谁用过EhLib,对它有何评价!
- sizeof的疑问?应该估计是delphi的bug。ps:我怎么也找不出问题。
- msdn:菜问题
- 各位老大快来救命,昨天在删除电脑中的linux系统后,重起电脑就提示NTLDR missing,press any key restart??
- 祝贺firetoucher成为DELPHI版的大版主
- 如何按顺序将文本文件中的数写到表中
var i,j:Integer;
Dct:TRect;
begin
j:=Form1.height;
for i:=0 to 255 do
begin
Canvas.Brush.Color:=RGB(255,255,i);
Dct:=Rect(i*2,0,(i+1)*2,j);
Canvas.FillRect(Dct);
end;
end;
i, j, k: DWord;
begin
j :=Form1.Height;
i := 0;
k := 0;
while i <= j do
begin
if i mod 2 = 1 then
begin
Inc(k);
Canvas.Pen.Color := RGB(k, k, k);
end;
Canvas.MoveTo(0, i);
Canvas.LineTo(Form1.Width, i);
Inc(i);
end;
i, j, k: DWord;
begin
j :=Form1.Height;
i := 0;
k := 0;
while i <= j do
begin
if i mod 2 = 1 then
begin
Inc(k);
Canvas.Pen.Color := RGB(k, k, k);
end;
Canvas.MoveTo(0, i);
Canvas.LineTo(Form1.Width, i);
Inc(i);
end;
双击窗体的OnPaint事件,然后编写如下程序: procedure TForm1.FormPaint(Sender: TObject);
var i:word;
dy,y:real;
begin
dy:=clientheight/256;
y:=0;
for i:=255 downto 0 do
begin
canvas.brush.color:=$00000000+i*$10000;
canvas.fillrect(rect(0,round(y),clientwidth,round(y+dy)));
y:=y+dy;
end;
end;
COLOR16 = word;
TRIVERTEX = packed record
x, y: dword;
Red: COLOR16;
Green: COLOR16;
Blue: COLOR16;
Alpha: COLOR16;
end;
function GradientFill(DC: hDC; pVertex: Pointer;
dwNumVertex: DWORD; pMesh: Pointer;
dwNumMesh, dwMode: DWORD): DWord; stdcall; external 'msimg32.dll';procedure TForm1.DrawPanel;
var
vert : array[0..1] of TRIVERTEX;
gRect : GRADIENT_RECT;
cl: LongInt;
begin
vert[0].x := 0;
vert[0].y := 0;
cl := ColorToRGB(clBlack);
vert[0].Red := GetRvalue(cl) * 256;
vert[0].Green := GetGValue(cl) * 256;
vert[0].Blue := GetBValue(cl) * 256;
vert[0].Alpha := $0000;
vert[1].x := FillImage.Width;
vert[1].y := FillImage.Height;
cl := ColorToRGB(clWhite);
vert[1].Red := GetRValue(cl) * 256;
vert[1].Green := GetGValue(cl) * 256;
vert[1].Blue := GetBValue(cl) * 256;
vert[1].Alpha := $0000;
gRect.UpperLeft := 0;
gRect.LowerRight := 1;
GradientFill(Form1.Canvas.Handle, @vert, 2, @gRect, 1, GRADIENT_FILL_RECT_H);
end;GRADIENT_FILL_RECT_H 是横向过渡,GRADIENT_FILL_RECT_V 是纵向过渡,详细情况查询 MSDN 帮助。