Soyez le premier à donner votre avis sur cette source.
Vue 5 847 fois - Téléchargée 3 154 fois
procedure TForm1.TimerMiseAJourTimer(Sender: TObject); // Tableau de définition du masque 'ET' // Un bit correspond à un pixel de l'icone // - Si le bit de ce tableau est à 0 alors le pixel // correspondant du tableau 'XOR' sera dessiné tel quel // - Si le bit de ce tableau est à 1 alors le pixel // correspondant du tableau 'XOR' sera dessiné mixé avec un ou exclusif // avec la couleur de base de l'écran. Donc si le pixel de Xor est à zéro, // cela revient à rendre le point transparent Const AndMasque : Array[0..31]Of Array[0.. 3]Of Byte =( ( $FF , $00 , $00 ,$00 ), ( $FE , $00 , $00 ,$00 ), ( $FC , $00 , $00 ,$00 ), ( $F8 , $00 , $00 ,$00 ), ( $F0 , $00 , $00 ,$00 ), ( $E0 , $00 , $00 ,$00 ), ( $C0 , $00 , $00 ,$00 ), ( $80 , $00 , $00 ,$00 ), ( $00 , $00 , $00 ,$00 ), ( $00 , $00 , $00 ,$00 ), ( $00 , $00 , $00 ,$00 ), ( $00 , $00 , $00 ,$00 ), ( $00 , $00 , $00 ,$00 ), ( $00 , $00 , $00 ,$00 ), ( $00 , $00 , $00 ,$00 ), ( $00 , $00 , $00 ,$00 ), ( $00 , $00 , $00 ,$00 ), ( $00 , $00 , $00 ,$00 ), ( $00 , $00 , $00 ,$00 ), ( $00 , $00 , $00 ,$00 ), ( $00 , $00 , $00 ,$01 ), ( $00 , $00 , $00 ,$03 ), ( $00 , $00 , $00 ,$07 ), ( $00 , $00 , $00 ,$0F ), ( $00 , $00 , $00 ,$1F ), ( $00 , $00 , $00 ,$3F ), ( $00 , $00 , $00 ,$7F ), ( $00 , $00 , $00 ,$FF ), ( $00 , $00 , $01 ,$FF ), ( $00 , $00 , $03 ,$FF ), ( $00 , $00 , $07 ,$FF ), ( $00 , $00 , $0F ,$FF )); // Le tableau 'XOR' contient le dessin de l'icone, combiné avec le maque 'ET' // ( voir ci-dessus ) // Pour une icone de 16 couleur, un octet du tableau défini deux points de // l'icône. Var XorMasque : Array[0..31]Of Array[0..15]Of Byte; i,j : Integer; Icone : HIcon; Ancienne : Integer; begin // Mise à jour du pas du petit graphique Inc(Avance); // Il faut garder le Handle de l'ancienne icone pour pouvoir la détruire // après modification Ancienne:=IconeEnCours; // Dessin du graphique ( simples bandes de couleurs ) For j:=0 To 31 Do For i:=0 To 15 Do XorMasque[j,i]:=(((Avance+i) Div 8 )And 7 +8)*17; // Mise à 0 du points de coin haut gauche de l'icône // Le coin haut gauche sera donc transparent car cela correspons aussi // à des bits à 1 dans le masque 'Et' For i:=0 To 7 Do For j:=0 To 7-i Do If Odd(i) Then XorMasque[j,i Shr 1] := XorMasque[j,i Shr 1] And $F0 Else XorMasque[j,i Shr 1] := XorMasque[j,i Shr 1] And $0F; // Création de l'icône Icone := CreateIcon(HInstance ,32 // Une icône est toujours de taille 32x32 ,32 // ,1 // Un seul plan dans le masque 'XOR' ,4 // 4 bits par couleur dans le maque 'XOR' ,@AndMasque // adresse du masque 'ET' ,@XorMasque); // adresse du masque 'XOR' // Si l'icône est créée correctement, elle est mise à jour If Icone<>0 Then Begin // Mise à jour de l'icône dans la barre des tâches IconeEnCours:=Icone; If Ancienne<>0 Then Begin ModifieIcone; // Destruction de l'ancienne DestroyIcon(Ancienne); End Else AjouteIcone; End; end;
8 mars 2003 à 11:34
8 mars 2003 à 09:07
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.