Developpez.com - 4D
X

Choisissez d'abord la catégorieensuite la rubrique :


Plugins : gestion RVB d'une couleur définie dans 4D

Date de publication : 28/12/2006

Par Thomas Schlumberger (Responsable Intl Tech Support)
 



Produit : 4D 2003, 4D 2004

Plateforme : Mac & Win



Le format de la variable couleur des plug-ins 4D est différente du format de la variable couleur quand elle est définie dans 4D.

Les composants RVB Rouge et Bleu doivent dans ce cas être inversés.

Si dans du code 4D Chart, 4D Draw, 4D View, 4D Write, vous voulez utiliser une couleur définie dans 4D, il faudra donc inverser les résultats Rouge et Bleu obtenus avec les commandes des plugins telle que :

      ch_COULEUR VERS RGB / ch_RGB vers couleur (4D Chart)
      dr_COULEUR VERS RGB / dr_RGB vers couleur (4D Draw)
      PV COULEUR VERS RVB / PV RVB vers couleur (4D View)
      WR COULEUR VERS RGB / WR RGB vers couleur (4D Write)


On crée d'abord une petite méthode utilitaire :
code 4D
   ` Methode: util_Chaine_Entier_Long_Hexa
   ` Retourne une chaine en Hexa de longueur 8 sur un entier long
   ` ----------------------------------------------------
C_ENTIER LONG($1)
C_TEXTE($0)

C_TEXTE($Defaut;$Resultat)
$Defaut:="0"*8

$Resultat:=Chaine($1;"&x")
$Resultat:=Sous chaine($Resultat;3)
$0:="0x"+Sous chaine($Defaut;1;(8-Longueur($Resultat)))+$Resultat
   ` ----------------------------------------------------

Puis un exemple de code avec 4D Chart : ` Méthode : ch_Couleur_Vers_RVB
code 4D
   ` Méthode : ch_Couleur_Vers_RVB
   ` ch_COULEUR VERS RGB (couleur; rouge; vert; bleu)
   ` parametre $1 (entier long) couleur
   ` parametre opt $2 (booleen) vrai si couleur definie dans 4D (pas dans 4D Chart)

C_ENTIER LONG($1)
C_BOOLEEN($2)

C_ENTIER LONG($Couleur;RVB_Rouge;RVB_Vert;RVB_Bleu;$RVB_Temp)
C_BOOLEEN($b4D_couleur)
C_TEXTE($txt)

$Couleur:=$1
Si (Nombre de parametres>1)
   $b4D_couleur:=$2
Fin de si 

ch_COULEUR VERS RGB ($Couleur;RVB_Rouge;RVB_Vert;RVB_Bleu)
Si ($b4D_couleur)  `il faut inverser RVB_Rouge et RVB_Bleu
   $RVB_Temp:=RVB_Rouge
   RVB_Rouge:=RVB_Bleu
   RVB_Bleu:=$RVB_Temp
Fin de si 

$txt:="Couleur = "+util_Chaine_Entier_Long_Hexa ($Couleur)+Caractere(13)
$txt:=$txt+"Rouge = "+Chaine(RVB_Rouge)
$txt:=$txt+", Vert = "+Chaine(RVB_Vert)+", Bleu = "+Chaine(RVB_Bleu)
ALERTE($txt)

et methode de test (si on a une zone 4D Chart "Zone").
code 4D
   ` Ces deux exemples vont donner une couleur equivalente aux deux rectangles
C_ENTIER LONG($Couleur;$Rect;$Rect2)
C_BOOLEEN($b4D_couleur)

   ` 1/ Si on passe une couleur exemple de 4D
$Couleur:=255  ` bleu dans 4D
$b4D_couleur:=Vrai

ch_Couleur_Vers_RVB ($Couleur;$b4D_couleur)
$Rect:=ch_Creer rectangle (Zone;5;5;200;200;5)
ch_FIXER TRAMAGE (Zone;$Rect;3;ch_RGB vers couleur (RVB_Rouge;RVB_Vert;RVB_Bleu))

   ` 2/ On définit une couleur dans 4D Chart 
$Couleur:=ch_Index vers couleur (7)  `bleu dans 4D, voir valeur differente de $Couleur
ch_Couleur_Vers_RVB ($Couleur)
$Rect2:=ch_Creer rectangle (Zone;220;5;420;200;5)
ch_FIXER TRAMAGE (Zone;$Rect2;3;ch_RGB vers couleur (RVB_Rouge;RVB_Vert;RVB_Bleu))


Valid XHTML 1.1!Valid CSS!

Copyright © 2006 4D s.a. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Contacter le responsable de la rubrique 4D