ATOUTFOX
COMMUNAUTÉ FRANCOPHONE DES PROFESSIONNELS FOXPRO
Visual FoxPro : le développement durable

ColorToRGB()   



L'auteur

eddymaue
Canada Canada
Membre Simple
# 0000000075
enregistré le 26/10/2004
Maue Eddy
j8j 8j8 Gatineau
de la société Formatek
Fiche personnelle


Note des membres
17,5/20
2 votes


Contributions > 01 - PRG : Programmation > Conversions

ColorToRGB()
# 0000000106
ajouté le 30/11/2004 17:59:20 et modifié le 30/03/2005
consulté 8451 fois
Niveau débutant

Version(s) Foxpro :
VFP 9.0
VFP 8.0
VFP 7.0
VFP 6.0

Description

Comment extraire le RGB d'une couleur

Code source :
* Deux fonctions, deux utilités.
* ColorToRGB() devrais être plus lent que cColorToRGB().
* Mais, dans bien des cas, j'ai besoin d'une extraction immédiate d'une des couleurs
* Donc ColorToRGB(iRGB,@r,@g,@b) par son passage par référence me retourne la couleur
*   désirée sans autres traitements
* cColorToRGB() je ne m'en suis jamais servit jusqu'à présent mais elle présente dans mon fichier de
*   procédure de fonction pour traitement de couleurs.
*```````````````````````````````````````````````````````````````````````````````````````````````````
*
#If .F.
   Local ;
      ir As Integer ,;
      ig As Integer ,;
      ib As Integer ,;
      iRGB As Integer ,;
      lcRGB As Character

   iRGB = Rgb(10,30,60)

   lcRGB = ColorToRgb(iRGB,@ir,@ig,@ib)

* Résultat
* ir = 10
* ig = 30
* ib = 60
* lcRGB = "10,30,60"

* Pour l'extrême vitesse (pas testé mais devrait être plus rapide)
   lcRGB = cColorToRGB(iRGB)

* Résultat
* lcRGB = "10,30,60"


#Endif

Function ColorToRgb(nRGB,nR,nG,nB)
m.nR = Bitand(0xff,nRGB)
m.nG = Bitand(0xff,Bitrshift(nRGB,8))
m.nB = Bitand(0xff,Bitrshift(nRGB,16))
Return Transform(m.nR)+","+Transform(m.nG)+","+Transform(m.nB)

Function cColorToRGB(nRGB)
Return Transform(Bitand(0xff,nRGB))+","+Transform(Bitand(0xff,Bitrshift(nRGB,8)))+","+Transform(Bitand(0xff,Bitrshift(nRGB,16)))
*
*```````````````````````````````````````````````````````````````````````````````````````````````````
Commentaires
le 01/12/2004, Mike Gagnon a écrit :
En passant, je ne crois pas que TRANSFORM() existait avec FPD et FPW2.6 et VFP3.0 et VFP5.0 (je ne suis pas sur de VFP6.0)
le 01/12/2004, FredA a écrit :
VFP6 : ok
fpd26 : manque le deuxieme parametre "999"

le 21/04/2007, eddymaue a écrit :
Fred ca fait un bout que je ne me suis pas servit de la 2.6. Enfin je dirais même que je suis passé de la 2.5 à 6 directement. Fait que si un jour ça te tente et que t'en a là motivation corrige et dit moi quoi faire

a+


www.atoutfox.org - Site de la Communauté Francophone des Professionnels FoxPro - v3.4.0 - © 2004-2024.
Cette page est générée par un composant COM+ développé en Visual FoxPro 9.0-SP2-HF3