我正在尝试创建一个带有图像的列表框。图片将从 TImage 组件中获取;我不想使用 TImageList,因为 TImage 可以处理很多图像类型(png、gif、jpg),而且我不必转换它来填充 Imagelist。
所以我已经将我的列表框样式设置为 lbOwnerDrawVariable 并且我正在尝试将 TImage 中的图像绘制到列表框中。我已将 Image1 的宽度和高度设置为 50,因为这是我希望图像在列表框中具有的大小。
这是我的代码:
procedure TForm2.listbox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
var
CenterText: Integer;
begin
listbox1.Canvas.FillRect(Rect);
listbox1.Canvas.draw(rect.Left+4,rect.Top+4,image1.Picture.graphic);
CenterText := (Rect.Bottom - Rect.top - listbox1.Canvas.TextHeight(text)) div 2;
listbox1.Canvas.TextOut(Rect.left + 58, Rect.top + CenterText, listbox1.Items.Strings[index]);
end;
但是,它不是将图像放在每个列表框项中,而是在列表框本身内绘制了很多图像,其原始大小而不是 50 ......我的代码有什么问题?