Перейти к содержанию
Fire Monkey от А до Я
  • 0

[Windows] Как загрузить HICON в TBitmap?


VirusZ2D

Вопрос

доброго времени суток подскажите метод как засунуть иконку в bitmap

 

получаю иконку папки и ума не приложу как ее преобразовать 

var
  infoFile:SHFILEINFO; 
  flag:Cardinal;
begin
  try
    flag:=SHGFI_ICON;
    flag:=flag or SHGFI_SMALLICON;
    ZeroMemory(Addr(infoFile),SizeOf(infoFile));
    SHGetFileInfo('C:\',0,infoFile,SizeOf(infoFile),flag);

//   infofile.hIcon (HICON) как присвоить его картинки
    Image1.Bitmap :=
Изменено пользователем Brovin Yaroslav
Ссылка на комментарий

Рекомендуемые сообщения

  • 0
  • Администраторы

Добрый день,

 

Так же, как и в случае конвертации HBitmap -> TBitmap

var
 tmpIcon: Vcl.Graphics.TIcon;
 tmpStream: TMemoryStream;
begin
  tmpIcon := TIcon.Create;
  try
    tmpIcon.Handle := GetIcon;   
    tmpStream := TMemoryStream.Create;
    try
      tmpIcon.SaveToStream(tmpStream);
      Image1.Bitmap.LoadFromStream(tmpStream);
    finally
      tmpStream.Free;
    end;
  finally
    tmpIcon.Free;    
  end;
end;

GetIcon - функция, которая возвращает хендл иконки. в вашем случае infofile.hIcon

Ссылка на комментарий
  • 0
  • Модераторы
28 минут назад, AlexShaman сказал:

Как сделать обратное преобразование  TBitmap -> HBitmap ?

var
  tmpIcon: Vcl.Graphics.TBitmap;
  tmpStream: TMemoryStream;
  tmpBitmap: FMX.Graphics.TBitmap;
begin
  tmpBitmap := FMX.Graphics.TBitmap.Create;
  // tmpBitmap.Assign/LoadFrom***

  tmpIcon := Vcl.Graphics.TBitmap.Create;
  try
    tmpStream := TMemoryStream.Create;
    try
      tmpBitmap.SaveToStream(tmpStream);
      tmpStream.Position := 0;
      tmpIcon.LoadFromStream(tmpStream);

      // tmpIcon содержит вашу картинку HBITMAP
    finally
      tmpStream.Free;
    end;
  finally
    tmpBitmap.Free;
    tmpIcon.Free;
  end;
end;

не проверял, писал на форуме. Но порядок правильный должен быть

Ссылка на комментарий
  • 0
6 часов назад, AlexG сказал:

Ну первое что в голову приходит - а какой формат вы грузите? Догадываюсь что "bmp", но я про его формат (бит/цвет, сжатие и т.д.).

Создаю файл в Paint (для теста), сохраняю в bmp 32bit 1680x373

tmpIcon.PixelFormat := vcl.Graphics.TPixelFormat.pf32bit;

tmpIcon.Width := 1680;

tmpIcon.Height:= 373;

Какие еще надо установить значения до

tmpIcon.LoadFromStream(tmpStream); ?

Ссылка на комментарий
  • 0
40 минут назад, AlexShaman сказал:

Создаю файл в Paint (для теста), сохраняю в bmp 32bit 1680x373

tmpIcon.PixelFormat := vcl.Graphics.TPixelFormat.pf32bit;

tmpIcon.Width := 1680;

tmpIcon.Height:= 373;

Какие еще надо установить значения до

tmpIcon.LoadFromStream(tmpStream); ?

Вас не смущает "размер" вашей "иконки"? :)

Вы в нее решили фотку запилить? Сделайте для теста 32*32

Ссылка на комментарий
Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...