Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

ICO > BMP

01.01.2007
Var
Icon   : TIcon;
Bitmap : TBitmap;
begin
  Icon   := TIcon.Create;
  Bitmap := TBitmap.Create;
  Icon.LoadFromFile('c:\picture.ico');
  Bitmap.Width := Icon.Width;
  Bitmap.Height := Icon.Height;
  Bitmap.Canvas.Draw(0, 0, Icon);
  Bitmap.SaveToFile('c:\picture.bmp');
  Icon.Free;
  Bitmap.Free;
end;

Взято с сайта https://blackman.wp-club.net/


procedure TIconShow.FileListBox1Click(Sender: TObject);
var
 
  MyIcon: TIcon;
  MyBitMap: TBitmap;
begin
 
  MyIcon := TIcon.Create;
  MyBitMap := TBitmap.Create;
 
  try
    { получаем имя файла и связанную с ним иконку}
    strFileName := FileListBox1.Items[FileListBox1.ItemIndex];
    StrPCopy(cStrFileName, strFileName);
    MyIcon.Handle := ExtractIcon(hInstance, cStrFileName, 0);
 
    { рисуем иконку на bitmap в speedbutton }
    SpeedButton1.Glyph := MyBitMap;
    SpeedButton1.Glyph.Width := MyIcon.Width;
    SpeedButton1.Glyph.Height := MyIcon.Height;
    SpeedButton1.Glyph.Canvas.Draw(0, 0, MyIcon);
 
    SpeedButton1.Hint := strFileName;
 
  finally
    MyIcon.Free;
    MyBitMap.Free;
  end;
end;

Чтобы преобразовать Icon в Bitmap используйте TImageList. для обратного преобразования замените метод AddIcon на Add, и метод GetBitmap на GetIcon.

function Icon2Bitmap(Icon: TIcon): TBitmap;
begin
  with TImageList.Create (nil) do
  begin
    AddIcon (Icon);
    Result := TBitmap.Create;
    GetBitmap (0, Result);
    Free;
  end;
end;

Взято с https://delphiworld.narod.ru

Способ преобразования изображения размером 32x32 в иконку.

unit main;
 
interface
 
uses
 
  Windows, Messages, SysUtils, Classes, Graphics, Controls,
  Forms, Dialogs, ExtCtrls, StdCtrls;
 
type
 
  TForm1 = class(TForm)
    Button1: TButton;
    Image1: TImage;
    Image2: TImage;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
 
  Form1: TForm1;
 
implementation
 
{$R *.DFM}
 
procedure TForm1.Button1Click(Sender: TObject);
var
  winDC, srcdc, destdc: HDC;
 
  oldBitmap: HBitmap;
  iinfo: TICONINFO;
begin
 
  GetIconInfo(Image1.Picture.Icon.Handle, iinfo);
 
  WinDC := getDC(handle);
  srcDC := CreateCompatibleDC(WinDC);
  destDC := CreateCompatibleDC(WinDC);
  oldBitmap := SelectObject(destDC, iinfo.hbmColor);
  oldBitmap := SelectObject(srcDC, iinfo.hbmMask);
 
  BitBlt(destdc, 0, 0, Image1.picture.icon.width,
    Image1.picture.icon.height,
    srcdc, 0, 0, SRCPAINT);
  Image2.picture.bitmap.handle := SelectObject(destDC, oldBitmap);
  DeleteDC(destDC);
  DeleteDC(srcDC);
  DeleteDC(WinDC);
 
  image2.Picture.Bitmap.savetofile(ExtractFilePath(Application.ExeName)
    + 'myfile.bmp');
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
 
  image1.picture.icon.loadfromfile('c:\myicon.ico');
end;
 
end. 
https://delphiworld.narod.ru/

DelphiWorld 6.0