gpt4 book ai didi

delphi - 将 png/jpg/gif 转换为 ico

转载 作者:行者123 更新时间:2023-12-03 15:07:50 25 4
gpt4 key购买 nike

我有多个图像,其中一些是 png,一些是 jpg 和 gif,我想将它们显示在 ListView 中,因为缩略图 TImageList 仅支持图标,我如何将它们转换为能够将它们插入到 TImageList 中。

我正在使用Delphi XE

最佳答案

为了具体回答这个问题,还要考虑简单的调整大小(对于缩略图),一些示例代码:

var
Img: TImage;
BmImg: TBitmap;
Bmp: TBitmap;
BmpMask: TBitmap;
IconInfo: TIconInfo;
Ico: TIcon;
begin
Img := TImage.Create(nil);
Img.Picture.LoadFromFile(...

BmImg := TBitmap.Create;
BmImg.Assign(Img.Picture.Graphic);
Img.Free;

Bmp := TBitmap.Create;
Bmp.SetSize(ImageList1.Width, ImageList1.Height);
SetStretchBltMode(Bmp.Canvas.Handle, HALFTONE);
StretchBlt(Bmp.Canvas.Handle, 0, 0, Bmp.Width, Bmp.Height,
BmImg.Canvas.Handle, 0, 0, BmImg.Width, BmImg.Height, SRCCOPY);
BmImg.Free;

BmpMask := TBitmap.Create;
BmpMask.Canvas.Brush.Color := clBlack;
BmpMask.SetSize(Bmp.Width, Bmp.Height);

FillChar(IconInfo, SizeOf(IconInfo), 0);
IconInfo.fIcon := True;
IconInfo.hbmMask := BmpMask.Handle;
IconInfo.hbmColor := Bmp.Handle;

Ico := TIcon.Create;
Ico.Handle := CreateIconIndirect(IconInfo);

ImageList1.AddIcon(Ico);

Bmp.Free;
BmpMask.Free;
Ico.Free; // calls DestroyIcon
end;

或者,不创建图标:

var
Img: TImage;
BmImg: TBitmap;
Bmp: TBitmap;
begin
Img := TImage.Create(nil);
Img.Picture.LoadFromFile(..

BmImg := TBitmap.Create;
BmImg.Assign(Img.Picture.Graphic);
Img.Free;

Bmp := TBitmap.Create;
Bmp.SetSize(ImageList1.Width, ImageList1.Height);
SetStretchBltMode(Bmp.Canvas.Handle, HALFTONE);
StretchBlt(Bmp.Canvas.Handle, 0, 0, Bmp.Width, Bmp.Height,
BmImg.Canvas.Handle, 0, 0, BmImg.Width, BmImg.Height, SRCCOPY);
BmImg.Free;

ImageList1.AddMasked(Bmp, clNone);

Bmp.Free;
end;

关于delphi - 将 png/jpg/gif 转换为 ico,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8589096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com