Ikony 16x16 w zasobach. Jak wczytać

0

Dlaczego pobierając z zasobów ikonę 16x16, Delphi powiększa ikonę do 32x32 ?!

Pobieram ikonę w taki sposób:

Image1.Picture.Icon.LoadFromResourceName(HInstance,'OK');

A nawet w taki:

var
 Ico: TIcon;
begin
 Ico := TIcon.Create;
 Ico.Handle := LoadIcon(hInstance, 'OK');
 Image1.Canvas.Draw(0, 0, Ico);
 Ico.Free;
end;

i dalej jest 32x32.

user image
1 - ikona wczytana przez Delphi (powiększona nie wiem czemu do 32x32)
2 - wielkość ikony jaka powinna być załadowana poprawnie

Jak widać, ikona w zasobach ma 16x16.... więc o co tu chodzi ?

0

Bo delphi stosuje do malowania ikony DrawIcon a tobie potrzeba DrawIconEx

0

poszukałem na temat DrawIconEx i zastosowałem coś takiego:

 Icon: TIcon;
begin
 Icon := TIcon.Create;
 Icon.Handle := LoadIcon(hInstance, 'OK');
 DrawIconEx(Image1.Canvas.Handle, 1, 1, Icon.Handle, 16, 16, 0, 0, di_normal );
 Icon.Free;

Jednak pod spodem ikony jest białe tło.

Jak je usunąć, tj uzyskać przeźroczystość z ikony.

0

Bo delphi z automatu tworzy biala bitmape zamiast image daj paintbox'a i odmalowanie ikony w paint, albo transparent ale to nie daje 100% pewnosci (jak biale elementy w ikonie).

0

świeżo po zabawie z ikonami jestem i wystarczy użyć trybu malowania Transparent
i wtedy kolorem przeźroczystym jest kolor taki jaki powinien być =]

0

No nie, ile zabawy...

jak to zrobić ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1