Ik heb een programma waarin ik in een resource een 32-bit icoontje heb gestopt, met een slpha-channel dus. Nu wil ik dat icoontje op een bitmap tekenen, maar ik zie dat alpha-channel niet meer terug. Hij pakt de 24-bit versie van het icoontje:
Ik heb op Google alleen maar mensen gevonden die het niet snappen, die zeggen "een bitmap ondersteunt geen alpha channel!", maar dat is natuurlijk niet van toepassing nu.
Het gekke is ook dat als ik dat icoontje in design-time in een TImage laad, dan zie ik het alpha-channel wél. Maar hoe krijg ik het alpha-channel nou in runtime?
Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| procedure LoadIcon(const Name: string; Dest: TBitmap); var Icon: HIcon; begin Icon := LoadImage(HInstance, PChar(Name), IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR); try Dest.Canvas.Brush.Color := clBtnFace; Dest.Canvas.FillRect(Rect(0, 0, Dest.Width, Dest.Height)); DrawIconEx(Dest.Canvas.Handle, 0, 0, Icon, 16, 16, 0, 0, DI_NORMAL); finally DestroyIcon(Icon); end; end; |
Ik heb op Google alleen maar mensen gevonden die het niet snappen, die zeggen "een bitmap ondersteunt geen alpha channel!", maar dat is natuurlijk niet van toepassing nu.
Het gekke is ook dat als ik dat icoontje in design-time in een TImage laad, dan zie ik het alpha-channel wél. Maar hoe krijg ik het alpha-channel nou in runtime?
[ Voor 3% gewijzigd door _Thanatos_ op 17-07-2004 16:58 ]
日本!🎌