Realiser un degrade sur plusieurs couleurs avec les api windows

Soyez le premier à donner votre avis sur cette source.

Vue 11 127 fois - Téléchargée 1 325 fois

Description

Encore un dégradé me direz vous
Oui mais cette source utilise une procédure qui existe déjà dans l'unité Windows depuis au moins Delphi 4
et elle permet de réaliser un dégradé sur deux où plusieurs couleurs de votre choix que ce soit en horizontale en verticale
Et maintenant en triangle il y a également une gestion ludique des couleurs.

J'ai volontairement mis cette fonction dans une unité à part afin de vous faciliter son utilisation et son intégration dans vos applications

Son utilisation est des plus simple puisqu'elle se résume en deux fonctions.

Exemple :

GradientRect(Canvas.handle, // le canvas dans le quel le dégradé sera dessiné
[clBlue, clGreen, clYellow, clRed], // les couleurs de votre choix
ClientRect, // les coordonées et la taille du dégradé à réaliser
GRADIENT_FILL_RECT_H // et la direction ici Horizontale et GRADIENT_FILL_RECT_V pour Verticale
); // si tout ce passe bien la fonction renvoie True

GradientTriangle(Canvas.handle, // le canvas dans le quel le dégradé sera dessiné
[clBlue, clGreen, clYellow, clRed], // les couleurs de votre choix minimum 3 et 4 pour remplir un rectangle où carrée entièrement
ClientRect, // les coordonées et la taille du dégradé à réaliser
); // si tout ce passe bien la fonction renvoie True

Conclusion :


Pour la gestion des couleurs je me suis légèrement inspiré de la source de WhiteHippo pour les Briques
//************************************************************************************************//
L'unité Gradients.pas a été revue et corrigée par Maître F0xi
Un grand merci à lui je peux dire.
Efficace et précieuse sa collaboration à été.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
460
Date d'inscription
dimanche 5 décembre 2004
Statut
Membre
Dernière intervention
6 avril 2009
2
Pourtant cela fonctionnait correctement (sans mettre ton code), mais j'ai quand même modifié l'unité Brique avec ta solution.

Merci,

@+,

Cincap
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
44
c'est pas tout à fait la même chose

j'ai mis le Zip à jour (il y a encore d'autres petites corrections ;))

en fait FCouleur est initialisé à 0

donc quand tu choisis une brique de couleur noir (0) le code n'est pas executé puisqu'il n'y a pas de différence entre Value et FCouleur :
if FCouleur <> Value then
begin
FCouleur := Value;
Brush.Color := Value;
Invalidate;
end;
Messages postés
460
Date d'inscription
dimanche 5 décembre 2004
Statut
Membre
Dernière intervention
6 avril 2009
2
Bonjour à toutes et à tous,

@Cirec, merci d'avoir répondu, j'avais ajouté cette ligne ce qui me semble quif quif.

Procedure Tfrm_Color.AddBrique(Value: TColor);
Begin

if value = $00000000 then value := value + 1 ;

@+,

Cincap
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
44
Il faut tout simplement jouter ceci dans le constructeur de TBrique:
FCouleur := -1;

voilà c'est tout
Messages postés
460
Date d'inscription
dimanche 5 décembre 2004
Statut
Membre
Dernière intervention
6 avril 2009
2
Bonjour à toutes et à tous,

@ Cirec, bon c'est OK, j'ai trouvé une parade qui fonctionne correctement.

@+,

Cincap
Afficher les 44 commentaires

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.