Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.02.17;
Скачать: CL | DM;

Вниз

Рисование иконки   Найти похожие ветки 

 
MNNN   (2008-01-26 11:19) [0]

гружу иконку LoadIcon( получаю хэндл, есть желание найти его
память чтоб порисовать на ней, так как иконка частный вид битмана


 
Leonid Troyanovsky ©   (2008-01-26 11:53) [1]


> MNNN   (26.01.08 11:19)

От:Ignacio Alvarez (ic...@son1.telmex.net.mx)
Заголовок:Re: Help: Drawing on a TIcon
Группы новостей:borland.public.delphi.graphics
Число:1999/04/20

This is sort of the same code I posted before but packaged in an easy to use
function that accepts a TBitmap and returns a TIcon. It also uses StretchDraw,
so the bitmap doesn"t have to be exactly 32x32:

function BitmapToIcon(Bitmap: TBitmap): TIcon;
var
 IconSizeX, IconSizeY : integer;
 IconInfo: TIconInfo;
 IconBitmap, MaskBitmap: TBitmap;
 x, y: Integer;
 TransparentColor: TColor;
begin
 IconSizeX := GetSystemMetrics(SM_CXICON);
 IconSizeY := GetSystemMetrics(SM_CYICON);
 IconBitmap:= TBitmap.Create;
 IconBitmap.Width:= IconSizeX;
 IconBitmap.Height:= IconSizeY;
 IconBitmap.Canvas.StretchDraw(Rect(0, 0, IconSizeX, IconSizeY), Bitmap);
 IconBitmap.TransparentColor:= Bitmap.TransparentColor;
 TransparentColor:= IconBitmap.TransparentColor and $FFFFFF;
 MaskBitmap:= TBitmap.Create;
 MaskBitmap.Assign(IconBitmap);
 for y:= 0 to IconSizeY - 1 do
   for x:= 0 to IconSizeX - 1 do
     if IconBitmap.Canvas.Pixels[x, y] = TransparentColor then
       IconBitmap.Canvas.Pixels[x, y]:= clBlack;
 IconInfo.fIcon:= True;
 IconInfo.hbmMask:= MaskBitmap.MaskHandle;
 IconInfo.hbmColor:= IconBitmap.Handle;
 Result:= TIcon.Create;
 Result.Handle:= CreateIconIndirect(IconInfo);
 MaskBitmap.Free;
 IconBitmap.Free;
end;

Example of use:

procedure TForm1.FormCreate(Sender: TObject);
var
 Bitmap: TBitmap;
 TempIcon: TIcon;
begin
 Bitmap:= TBitmap.Create;
 Bitmap.LoadFromFile("c:\program files\borland\delphi
3\images\icons\chem16.bmp");
 TempIcon:= BitmapToIcon(Bitmap);
 Application.Icon:= TempIcon;
 TempIcon.Free;
 Bitmap.Free;
end;

--
Regards, LVT.



Страницы: 1 вся ветка

Текущий архив: 2008.02.17;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.065 c
2-1200977987
Skyle
2008-01-22 07:59
2008.02.17
Коллизия имён функций. Общий вопрос.


15-1200583170
asdf
2008-01-17 18:19
2008.02.17
Кто как кодит?


2-1201038093
Vito
2008-01-23 00:41
2008.02.17
сдвиг окон


15-1200468306
Kolan
2008-01-16 10:25
2008.02.17
А вы знали, что Vista User Experience гайдлайны отличная вещь?


2-1201249539
Res
2008-01-25 11:25
2008.02.17
Char and String