用渐变背景颜色填充listview

时间:2015-05-19 13:38:50

标签: delphi listview

我试图使用GraphUtil在列表视图上绘制渐变背景,我只有梯度位置问题

这是我的自定义列表视图绘制事件

Var
  R: TRect;
begin
  // Full ListView
  SetRect(R, ARect.Left, ARect.Top, ARect.Right - ((ARect.Right-ARect.Left) div 2), ARect.Bottom );
  GradientFillCanvas(Sender.Canvas, panelemo.Color, clWhite, R, gdVertical); // GraphUtil
  SetRect(R, ARect.Right - ((ARect.Right-ARect.Left) div 2), ARect.Top, ARect.Right, ARect.Bottom );
  GradientFillCanvas(Sender.Canvas, panelemo.Color, clWhite, R, gdVertical);
  panelmeter.Color := panelemo.Color;

我想从右到左绘制渐变,而不是像这个图像一样从上到下绘制

enter image description here

1 个答案:

答案 0 :(得分:2)

目前还不清楚你真正想要的是什么,因为你所说的与你所展示的不同。

无论如何,gdHorizontal表示颜色从左到右水平从StartColor变为EndColor。在您的图像中,您将指定白色作为开始颜色并将turqoise指定为结束颜色。如果要更改水平方向(从右到左),则需要交换颜色。

水平使用代码示例:

GradientFillCanvas(ListView1.Canvas, AColor, clWhite, R, gdHorizontal);

enter image description here

gdVertical表示颜色从上到下垂直变化。如果要更改垂直方向(从下到上),则需要交换颜色。

垂直使用代码示例:

GradientFillCanvas(ListView1.Canvas, AColor, clWhite, R, gdVertical);

enter image description here

我认为您提到的切片结果,是由于您为GradientFillCanvas()的每一半绘制了两次调用TRect一次的渐变。