Delphi:像工具栏一样的渐变

时间:2011-08-19 04:14:03

标签: delphi colors toolbar gradient

我需要一个带渐变的工具栏,但我想要没有热门曲目的普通按钮。我作为TToolBar类做:

我的代码:

procedure TForm7.ToolBar1CustomDraw(Sender: TToolBar; const ARect: TRect;
      var DefaultDraw: Boolean);
begin
 GradientFillCanvas(sender.Canvas, clWindow, $00D6D6D6, ARect, gdVertical); //a GraphUtil unit
end;

ComCtrls单位的工具栏功能:

function TToolBar.GradientDrawToolBar(const ARect: TRect): Boolean;
begin
  Result := True;
  if gdoGradient in GradientDrawingOptions then
    GradientFillCanvas(Canvas, FGradientStartColor, FGradientEndColor,
      ARect, GradientDirection);
end;

为什么我会有不同的结果?

enter image description here

加了:

GetShadowColor(clBtnFace, -25) = $00D6D6D6对我来说

1 个答案:

答案 0 :(得分:2)

如果检查ComCtrls的源,则FGradientEndColor的值为GetShadowColor(clBtnFace,-25),它基于系统颜色,可能会根据Windows外观设置而更改。尝试在自定义绘图代码中使用相同的值,而不是$ 00D6D6D6。