如何在vsIcon ViewStyle中更改TListView的图标/项目大小?

时间:2016-06-04 00:15:59

标签: delphi delphi-xe7 tlistview

我需要一个可以显示缩略图的控件,为此我认为TListView ViewStyle设置为vsIcon对我来说已经足够了,不幸的是我意识到{{1}仅支持最大256x256的图像。我知道有第三方解决方案,但我希望使用标准TImageList

我需要显示的图像大约是348x480,所以我无法将它们添加到图像列表并将其分配给列表视图。

那么我想也许我可以将我的图像存储在TListView然后拥有列表视图,这很简单,只需使用TList方法并使用CustomDrawItem确切地知道要绘制到哪里,类似这样的东西(快速示例):

Item.DisplayRect

问题是如何更改每个listview项的大小?通常设置图像列表会改变项目的大小,但由于大小限制,我无法使用图像列表。

我曾尝试procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean); var ItemRect: TRect; IconRect: TRect; CaptionRect: TRect; begin DefaultDraw := False; ItemRect := Item.DisplayRect(drBounds); IconRect := Item.DisplayRect(drIcon); CaptionRect := Item.DisplayRect(drLabel); with ListView1 do begin if cdsHot in State then begin Canvas.Brush.Style := bsSolid; Canvas.Brush.Color := clSkyBlue; Canvas.FillRect(ItemRect); end; if cdsSelected in State then begin Canvas.Brush.Style := bsSolid; Canvas.Brush.Color := clBlue; Canvas.FillRect(ItemRect); end; { my picture list is a custom control that holds bitmaps in a TList } if MyPictureList1.Items.Count > 0 then MyPictureList1.Draw(Canvas, IconRect.Left + 348 div 4, IconRect.Top + 2, Item.ImageIndex); // commented out old code drawing from imagelist { if LargeImages <> nil then begin LargeImages.Draw(Canvas, IconRect.Left + LargeImages.Width div 4, 2, Item.ImageIndex); end; } // draw text etc end; end; 似乎没有做任何事情,我也尝试过膨胀我指定的地方,但没有运气。

是否可以手动将listview的图标/项目大小设置为大于256px,如果是这样,我该如何实现?

0 个答案:

没有答案