在Timage中显示图像列表项

use*_*856 11 delphi

我已经创建了一个内部有20位图的图像列表和一个从1到20的下拉列表值.当我选择下拉列表时,它应该显示与下拉列表索引相对应的位图.我遇到的问题是,当我选择下拉列表并且图像太小时,它会一直显示相同的图像.有没有想过解决这个问题?并使图像更大?

procedure TForm1.FormShow(Sender: TObject);
var
  i : integer;
begin
  for i:=0 to 20 do begin
    cboIcon.Items.Add(inttostr(i));
  end;
end;

procedure TForm1.cboIconChange(Sender: TObject);
begin
  ImageList1.Draw (Image1.Canvas, 0,0, cboIcon.ItemIndex);
end;
Run Code Online (Sandbox Code Playgroud)

Uwe*_*abe 17

你可以试试这段代码:

Image1.Stretch := true;  // to make it as large as Image1
Image1.Proportional := true;  // to keep width/height ratio
Image1.Picture.Bitmap:= nil; // clear previous image
ImageList1.GetBitmap(cboIcon.ItemIndex, Image1.Picture.Bitmap);
Run Code Online (Sandbox Code Playgroud)

  • 您可能希望在加载之前添加Image1.Picture.Bitmap:= nil,否则它将不会显示后续图像. (4认同)
  • 您不需要“尝试此代码”,您必须使用此代码! (2认同)
  • 请注意:如果我们想显示透明图像,我们应该使用“GetIcon” (2认同)