Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Иконка из dll прорисовать в VDT


Автор: Lence 25.10.2007, 21:19
Всем привет.
В dll находится иконка 16 на 16. Подгружается в приложение динамически. Как прорисовать иконку полученную из dll в VirtualDrawTree? Кто подскажет ? 

Делаю стандартно :
так прорисовываю картинку из Image List в VirtualDrawTree . 
Код

ImageList1.Draw(PaintInfo.Canvas, PictRect.Left+16, PictRect.Top, Data.Pict);



вырисовка иконки в Image 
Код

iHwnd := ExtractIcon(hndDLLHandle,Data.Path,0);
DrawIcon(Form1.Image1.Canvas.Handle, 0, 0, iHwnd);



Автор: VICTAR 25.10.2007, 23:18
Код

var aIcon: TIcon;
...
aIcon :=TIcon.Create;
aIcon.Handle:=ExtractIcon(hndDLLHandle, Data.Path, 0);
...
PaintInfo.Canvas.Draw(PictRect.Left+16, PictRect.Top, aIcon);

Автор: Lence 26.10.2007, 22:35
VICTAR, спасибо большое !!! работает!! У меня теперь другая проблема. Сама иконка в dll 16 на 16 но рисуется 32 на 32 ... 
В чем косяк ?

Код

 Function ExtractIcon(hInst : LongInt; lpszExeFileName :String;nIconIndex : LongInt): LongInt;
    stdcall; external 'shell32.dll' name 'ExtractIconA';


Автор: VICTAR 27.10.2007, 14:50
1) Рисуй StretchDraw
2) Посмотри в drkb тему "Извлечение иконки из EXE, DLL или ICO-файла"

Автор: Lence 28.10.2007, 18:24
Тему эту смотрел... размер иконки нариовать меньше получилось через StretchDraw . Но сама картинка 32 на 32. Картинка больше иконки получается все равно

Автор: Lence 28.10.2007, 20:55
Что- то не получается. Размер иконки 16 но сама картинка больше. 

Код

var
  aIcon: TIcon;
...
  aIcon.Handle:=ExtractIcon(hndDLLHandle, pChar(Data.Path), 0);

// создаю битмап чтоб поменять размер картинки 
  TheBitmap := TBitmap.Create;
  with TheBitmap do
  begin
   Width := 16;
   Height := 16;
   Canvas.Draw( 0, 0, aIcon);
  end;

// потом рисую
        PaintInfo.Canvas.StretchDraw(Rect(0, 0,16,16), TheBitmap);
        TheBitmap.Free;

Автор: VICTAR 28.10.2007, 23:32
Попробуй сделать так
Код

var
  aIcon: TIcon;
...
  aIcon.Handle:=ExtractIcon(hndDLLHandle, pChar(Data.Path), 0);

// создаю битмап чтоб поменять размер картинки 
  TheBitmap := TBitmap.Create;
  with TheBitmap do
  begin
    Width := aIcon.Width;
    Height := aIcon.Height;
    Canvas.Draw(0, 0, aIcon);
  end;

// потом рисую
    Canvas.StretchDraw(Bounds(0, 0, 16, 16), TheBitmap);        
    TheBitmap.Free;


Автор: Lence 29.10.2007, 22:49
VICTAR Огромное спасибо за помощь!!!!  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)