Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Salut les ptit clous...
Je ne sais pas si cela a déjà été posé et certainement que vous allez rire, allez le ridicule ne tue pas....
Ca fait bientôt 10 ans que je fais du pb et la j'ai une question qui m'irrite depuis 10 ans car je n'ai jamais eu la réponse.....
Les couleurs dans PB, je maitrise bien la finction RGB, je maitrise bien la formule (65536 * Blue)+ (256 * Green)+ Red = long...
Par contre je n'ai jamais trouvé de truc qui me permette de revenir en arrière...
Par exemple gl_back_color= 12632256, comment trouver à quelle couleur cela correspond? Y a t-il un outil? Pourquoi beaucoup de développeur utilise des long plutôt que la fonction RGB???
Merci pour votre réponse.
Bye
Pascal
Dernière modification par Pilou007 (21-08-2008 08:59:40)
Hors ligne
Bah, c'est du calcul ca...
Allez, un petit coup de pouce quand meme
Comme le facteur de multiplication entre les 3 parties est une puissance entiere de 2 (2^8), on peut faire comme suit:
1. le modulo 256 du long qui contient ta couleur correspond a la valeur du byte de poids le plus faible (le plus a droite). Donc, ta compo rouge!
2. le modulo 256 de la division entiere de ta couleur par 256 correspond au 2nd octet. Donc... la compo verte!
3. et ainsi de suite...
Tu saisi le principe?
C'est pas sorcier en fait... suffit de se rendre compte que diviser un entier par 2 fait un shift de 1 bit vers la droite de ton nombre...
Voila, t'as plus qu'a faire le code...
Hors ligne
B = RGB / 65536 G = (RGB - B * 65536) / 256 R = RGB - B * 65536 - G * 256
Hors ligne
N'oublie pas de mettre [RESOLU]
Hors ligne
Et bien merci pour tout ça....
Mais je ne vais pas mettre de suite en résolu, j'ai encore envie d'en parler, hihihi.....
1090059512 (normalement transparent, je ne suis pas sur), la formule ne doit fonctionner que pour les couleurs, non???
ou encore 1090059512 // Couleur system des fenêtres???
Comment fait t-on pour les valeur de ce type?
Existe t-il un tableau qui répertorie toutes les valeurs possibles?
Merci
Hors ligne
Hors ligne
Pour info...
Le byte de poids le plus elevé dans le long qui represente une couleur contient la valeur d'alpha. En PB ca ne sert pas a grand chose, si ce n'est de specifier la transparence (qui ne marche d'ailleurs pas avec tout).
Et les fameux 'button face', 'window background'... Ces couleurs systemes sont indexee dans ce byte d'alpha. (je ne sais plus si le reste du long a alors du sens...)
Et je finirai par dire que, pour ceux qui veulent faire des appels de l'API windows pour faire du GDI+, ATTENTION: PB inverse la position des bytes rouges et bleu par rapport a windows, le reste restant identique.
Hors ligne