如何使用vsIcon样式的OwnerDraw TListView位图?

时间:2013-04-25 14:20:51

标签: delphi

在StackOverFlow中有一些很好的示例,在TListView中使用vsReport样式的ownerdraw子项,但我找不到任何关于如何使用vsIcon样式在TListView中提取位图的示例?

我的位图存储在第三方列表中,并调整为32x32。我不想使用ImageList,因为位图在第三方列表中可用。下面显示的代码绘制第一个图标ok,但其余项目为空。 我是否可以在其他可以访问TRect的事件中执行此操作?

procedure TForm1.cxListView1CustomDrawItem(Sender: TCustomListView; Item: TListItem;
  State: TCustomDrawState; var DefaultDraw: Boolean);
var
  iBitmap: TBitmap;
  iRect: TRect;
begin
  { Create a TBitmap }
  iBitmap := TBitmap.Create;
  iBitmap.Width := 32;
  iBitmap.Height := 32;
  if Item.Index <> -1 then
  begin
    { Copy a bitmap from the list to iBitmap }
    AIEImageList.Image[Item.Index].CopyToTBitmap(iBitmap);
    { Resample the bitmap }
    iBitmap.IEResample(32, 32);
    {FIX}
    iRect := Item.DisplayRect(drBounds);
    { Draw the bitmap }
    Sender.Canvas.Draw(iRect.Left, iRect.Top, iBitmap);
  end;
  iBitmap.Free;
end;

0 个答案:

没有答案