Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1311 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Faire des couleurs simplement en X11 ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Faire des couleurs simplement en X11 ?

n°1643004
double cli​c
Why so serious?
Posté le 14-11-2007 à 20:19:13  profilanswer
 

Salut,
 
Je suis en train de faire un projet de programmation où je vais avoir besoin de dessiner des ronds et des rectangles de couleur dans une fenêtre, tout ça en C, en utilisant X11 sous Linux. Pour faire un rectangle de taille 100x100 placé en (20,20), par exemple, après les déclarations habituelles, je fais :
 

Code :
  1. XSetForeground(display,main_gc,couleur);
  2. XFillRectangle(display,window,main_gc,20,20,100,100);


 
En ayant déclaré au préalable int couleur = (un code couleur). J'ai remarqué qu'en mettant couleur = 0, ça faisait du noir, en mettant couleur = 16^6 - 1 (donc FFFFFF en hexa), ça faisait du blanc, et je m'attendais à ce qu'en mettant couleur = 16*16 + 16 (donc 0000FF en hexa), ça me donne du bleu, et ça me donne bien du bleu, mais super sombre... par contre, 16*16 - 1 ça donne du bleu bien comme il faut...
 
Bref, la documentation sur ce qu'il faut mettre dans XSetForeground est pas très explicite, et je me perds dans les détails des tutos que j'ai trouvés. Pourtant, c'est pas dur : j'ai les trois coordonnées RVB d'une couleur en hexa, et je veux colorier mon rectangle de cette couleur... je dois mettre quoi dans ma variable couleur pour faire ça ?
 
Merci :jap:


Message édité par double clic le 15-11-2007 à 01:30:24

---------------
Tell me why all the clowns have gone.
mood
Publicité
Posté le 14-11-2007 à 20:19:13  profilanswer
 

n°1643027
tpierron
Posté le 14-11-2007 à 20:58:32  profilanswer
 

Ah les joies de la Xlib et de son API néandertalienne. Bon, c'est évidemment plus compliqué que ça. D'abord tu dois allouer une couleur, suivant les réglages de ton display (colormap, pseudo-color, full-color), il se peut que les valeurs RVB dispo ne correspondent pas tout à fait à ce que tu veux.
 
La fonction kivabien est XAllocColor où tu devra renseigné une structure XColor. Dans cette structure tu renseignes les champs .spec.RGB.{red,green,blue} et .format = XcmsRGBFormat.
 
Tu appel ensuite XAllocColor et cette fonction va te retourner dans .pixel de ton XCollor, la valeur que tu peux mettre dans XSetForeground. Au passage elle va modifier les valeurs RVB pour refléter la vraie couleur qui sera utilisée. Évidemment si ton display est en true color, tout ce bordel ne sert à (presque) rien.
 
Yeaaarggll. Ah oui, et n'oubli de faire un XFreeColors pour chaque couleur allouée :(


Message édité par tpierron le 14-11-2007 à 21:03:21
n°1643034
double cli​c
Why so serious?
Posté le 14-11-2007 à 21:09:45  profilanswer
 

ah ouais [:psywalk]
 
bon, je vais regarder ça, merci :o


---------------
Tell me why all the clowns have gone.
n°1643038
xilebo
noone
Posté le 14-11-2007 à 21:13:44  profilanswer
 

il me semble que X11 gere les couleurs en BGR et non pas RGB. A vérifier :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Faire des couleurs simplement en X11 ?

 

Sujets relatifs
Récupérer des couleurs d'une feuille de style CSS avec javascriptHtmlDoc et les couleurs
Checkbox de couleurschanger les couleurs ds devc++
Conditions avec couleursBesoin d'un petit coup de main de 30s pour changer des couleurs
[JMF] Comment faire pour simplement lire un mp3 par exemple[c] liste simplement chainé==> pb [résolu==> merci]
[CSS/HTML] double couleurs de fond de tableau[Résolu] Créer un site dynamique rapidement et simplement
Plus de sujets relatifs à : Faire des couleurs simplement en X11 ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR