ça fait longtemps que j'ai ce code sous le coude (déjà plusieurs refontes) et j'ai pensé qu'il était temps de vous en faire profiter ^^
Alors c'est quoi ?:
ben tout simplement la prise en charge du Bitmap 32Bit par la VCL (en RunTime uniquement) en toute transparence ... (jeu de mots ^^)
ça veut dire que pour vous rien ne change (presque) vous utilisez les composants comme avant (TImage, TPicture, TBitmap) mais le 32Bits est géré.
Mais comment donc ?:
ben en surchargeant la classe TBitmap (voir le code dans crBitmap32.pas).
concrètement vous avez 2 propriétés supplémentaires:
NoAlpha: permet de ne pas utiliser le canal Alpha (32Bit Uniquement)
nb: NoAlpha est prioritaire sur propriété Transparent.
Opacity: de 0 à 255 permet changer l'opacité du Bitmap
peu importe le PixelFormat.
0 = Transparent.
255 = Opaque.
Pour tous les Bitmaps en-dessous de 32Bit:
si Opacity est <> 255 le bitmap est automatiquement transformé en 32Bit
Note importante :
pour accéder aux propriétés supplémentaires depuis un TBimap contenu dans un TPicture/TImage
vous serez obligé de transtyper explicitement le Bitmap en Bitmap ... hein quoi .. ^^
img_BkGround.Picture.Bitmap.Opacity <------- propriété inconnue
// Solution:
TBitmap(img_BkGround.Picture.Bitmap).Opacity
en revanche ceci ne pose aucun problème:
var aBMP : TBitmap;
begin
aBMP := TBitmap.Create;
aBMP.Opacity := 180;
...
end;
Dans ce code vous apprendrez, en plus, à:
effectuer des surcharges de composant, de méthodes, de procédures et fonctions.
centraliser les événements OnClick (jusqu'à 11 évènements sur une procédure)