【问题标题】:Delphi: Coloring TListViewDelphi:着色 TListView
【发布时间】:2013-07-24 04:59:39
【问题描述】:

我正在尝试为 TListView 中的文本分配多种颜色,例如渐变,我尝试搜索,但在互联网上我只能找到单色方法,我尝试一次绘制一个字符并更改颜色,但是那也行不通。这是我试过的代码。

procedure TForm1.lvMainAdvancedCustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; Stage: TCustomDrawStage; var DefaultDraw: Boolean);
var txtWidth: Integer;
    Rct: TRect;
begin
  Rct := item.DisplayRect(drBounds);
  lvMain.Canvas.Font.Color := clRed;
  DrawText(lvMain.Canvas.Handle, 'asd', 3, Rct, DT_SINGLELINE);
  Canvas.Refresh;
  lvMain.Canvas.Font.Color := clBlack;
  txtWidth := Canvas.TextWidth('asd');
  Rct.Left := Rct.Left + txtWidth;
  DrawText(lvMain.Canvas.Handle, 'b', 1, Rct, DT_SINGLELINE);
  lvMain.Canvas.Font.Color := clBlue;
  txtWidth := Canvas.TextWidth('b');
  Rct.Left := Rct.Left + txtWidth;
  DrawText(lvMain.Canvas.Handle, 'sa', 2, Rct, DT_SINGLELINE);
end;

它仍然会产生单一颜色。关于如何实现这一目标的任何建议?

谢谢

【问题讨论】:

    标签: delphi tlistview


    【解决方案1】:

    这是可能的,但您必须接管 Windows PaintPaintRegion 方法才能做得很好(使用真正的渐变)。

    另外,在返回之前将 DefaultDraw 设置为 false,否则你刚刚所做的所有工作都会被覆盖...

    【讨论】:

    • 有什么例子吗?或链接到一个?谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-28
    • 2015-05-03
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    相关资源
    最近更新 更多