ACanvas.FillRect(Rect(xb,ARect.Top,xb 1,ARect.Bottom));
inc(xb);
end;
ImageList1.Draw(ACanvas,ARect.Left 1,ARect.Top 1,0,true); //在左边绘制图标
ACanvas.Font.Color:=clWhite; //被选中时的字体前景色是白色
SetBkMode(ACanvas.Handle,TRANSPARENT); //必须重设背景模式为透明
ACanvas.TextOut(ARect.Left 20,ARect.Top 4,Item.Caption);//front color,which is white font
end;
end;
在各菜单项的OnDrawItem事件处(如五所示)均调用此过程,运行程序可以看到一个有背景图、所选菜单项左边有一个图标且背景色是由红到黄渐变的菜单。
㈡ 以下是实现上述个性化菜单的自定义过程DrawItem的另一个示例的代码。为一个有图标的弹出式菜单,不作过多的说明了。
procedure TForm1.DrawItem(Item:TMenuItem; ACanvas: TCanvas; ARect: TRect; Selected: Boolean);
var
i,xb:integer;
begin
//设置字体和其前景色
ACanvas.Font := Screen.IconFont;
ACanvas.Brush.Color := clBtnFace;
ACanvas.FillRect(ARect);
ACanvas.TextOut(ARect.Left 20,ARect.Top 4,Item.Caption);
if Selected then begin
//绘制当前选择的菜单项
xb:=0;
for i:=0 to ARect.Right do begin
ACanvas.Brush.Color :=clTeal i*$100;//gradient back color
ACanvas.FillRect(Rect(xb,ARect.Top,xb 1,ARect.Bottom));
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




