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

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Fonction pour la couleur RVB (RGB)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Fonction pour la couleur RVB (RGB)

n°1089734
MatMeuh
Posté le 19-05-2005 à 18:20:08  profilanswer
 

Bonjour
 
Je suis en train de développer une app graphique avec Dev-pascal sous win Xp.
 
J'ai un petit prob pour les couleurs
en fait PutPixel prend 3 params : la pos en X, la pos en Y et un param couleur de type byte ou word (je sais plus trop)
mais moi j'aimerais lui passer des params RVB (RGB) donc faire une procedure

Code :
  1. procedure MyPutPixel(x:integer;y:integer;r:integer;g:integer;b:integer);
  2. var
  3. c: word;
  4. begin
  5. ...r,g,b...--> c
  6. PutPixel(x,y,c);
  7. end;


 
le probleme comme vous le voyiez est au niveau des ... pascal a tendance à pas comprendre  ;)  
que faut il que je mette ?
 
merci
 
a++


Message édité par MatMeuh le 19-05-2005 à 18:20:41
mood
Publicité
Posté le 19-05-2005 à 18:20:08  profilanswer
 

n°1090796
antp
Super Administrateur
Champion des excuses bidons
Posté le 20-05-2005 à 15:09:59  profilanswer
 

En Delphi il y a une fonction "RGB" mais je suppose que ça n'existait pas encore en Pascal :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°1093587
Cate Winig​an
Paranormal activity detected.
Posté le 23-05-2005 à 15:54:31  profilanswer
 

A mon avis, PutPixel() prend plutôt un word qu'un byte pour la couleur, sauf si cette fonction ne connaît que les modes VGA qui ne servent plus depuis longtemps : 256 couleurs (nombre maxi permis par le byte), ça fait un peu pauvre.
 
Pour empaqueter les composantes RGB en un seul entiers, je ferais ça :

Code :
  1. var R, G, B : byte;
  2. var C : word; // ou Longint, ou n'importe quel type scalaire d'au moins 3 octets.
  3. C := R shl 16 + G shl 8 + B;


Ce qui revient à faire

Code :
  1. C := R * 65536 + G * 256 + B;


sauf qu'avec des SHift Left (shl), c'est beaucoup plus rapide pour le processeur qu'avec des multiplications. Si C mesure 4 octets (ça, ça dépend de ce que fait ton compilateur quand il voit "word" ), il sera rempli comme ça : 00000000RRRRRRRRGGGGGGGGBBBBBBBB.
 
Après, je sais pas si ta procedure PutPixel() s'adapte toute seule au mode graphique utilisé ou pas (tu pourras trouver ça dans la doc de ta procedure j'espère). Ce que j'ai dit au-dessus, ça marche pour un mode écran en couleurs 24 ou 32 bits. Pour du 15 bits, c'est

Code :
  1. C := (R shr 3) shl 10 + (V shr 3) shl 5 + B shr 3;

Et en 16 bits, c'est pareil sauf que le vert est codé sur 6 bits au lieu de 5, et je ne sais plus où on met sont LSB, si c'est sur le MSB de C (ie séparé du reste des bits V) ou si c'est à sa place 'normale', à droite des bits V. Fiou, ça me rappelle quand je compilais pour dos avec Pascal Lite Compiler...

n°1093624
antp
Super Administrateur
Champion des excuses bidons
Posté le 23-05-2005 à 16:10:10  profilanswer
 

Pour du Pascal sous DOS ça ne m'étonnerait pas que ce soit un mode avec palette, en 16 ou 256 couleurs donc. Là si c'est bien une application graphique c'est probablement des couleurs 24 bits comme en Win32 et en Delphi.
Il faut voir si c'est bien du RGB ; en Delphi par exemple les TColor sont en BGR. Je ne sais plus si ce type de couleurs est hérité de Win32 ou si c'est propre à Delphi.


Message édité par antp le 23-05-2005 à 16:11:14

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Fonction pour la couleur RVB (RGB)

 

Sujets relatifs
Explication à propos de la fonction Run en vbsFonction mail()
jtextpane et html : changer la couleur d'un mot en particulierFonction POS impossible (facile a resoudre je pense)
Récuperer les paramètres d'une fonction VBAComment marche la fonction Random
problème avec la fonction onload()[C] Imprimer code source en couleur
[Caml] Aide pour une fonctionProbleme avec la fonction onunload
Plus de sujets relatifs à : Fonction pour la couleur RVB (RGB)


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