Les couleurs primaires des tubes des pots de peinture.

Soyez le premier à donner votre avis sur cette source.

Snippet vu 541 fois

Contenu du snippet

Deux modèles colorimétriquees existent,
la synthése additive des écrans en Rouge,vert bleu,
quand on les additionne on obtient du blanc,
la synthèse soustrative des couleurs des imprimeurs
soit le Cyan, la magenta et le jaune,
cette algorithme permer de convertir
une couleur composée de rouge, vert et de bleu en cyan, magenta jaune et noir.
Comme quand on mélange ces coleurs on obtient du gris souris (comme avec la pâte à modeler),
les imprimeurs ajoutent un film de noir, voici ces équations :


unit Cyan_magenta_jaune_et_noir;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

procedure RGB_to_CMYB(RGB_long:TcolorRef; VAR Real_Cyan,Real_Magenta,Real_Yellow,Real_black:real)
procedure CMYB_to_RGB(Real_Cyan,Real_Magenta,Real_Yellow,Real_black:real; var RGB_long:TcolorRef);
function Obtenir_le_vrai_CMYN(une_color:tcolorref):string;


implementation

{$R *.dfm}

function Real_min(a,b:Real):Real;
 begin 
 if a<b then
  Real_min:=a 
 else 
  Real_min:=b; 
 end;
 
function Real_max(a,b:Real):Real;
 begin 
 if a>b then 
  Real_max:=a 
 else 
  Real_max:=b; 
 end;


procedure RGB_to_CMYB(RGB_long:TcolorRef; VAR Real_Cyan,Real_Magenta,Real_Yellow,Real_black:real);
 var rouge,vert,bleu:real;
 begin
 rouge:=GetRvalue(RGB_long);
 vert:=GetGvalue(RGB_long);
 bleu:=GetBvalue(RGB_long);
 Real_Cyan:=1.0-(rouge/255);
 Real_Magenta:=1.0-(vert/255);
 Real_Yellow:=1.0-(bleu/255);
 Real_black:=Real_min(Real_min(Real_Cyan,Real_Magenta),Real_Yellow);
 Real_Cyan:=Real_Cyan-Real_black;
 Real_Magenta:=Real_Magenta-Real_black;
 Real_Yellow:=Real_Yellow-Real_black;
 end; {RGB_to_CMYB}

procedure CMYB_to_RGB(Real_Cyan,Real_Magenta,Real_Yellow,Real_black:real; var RGB_long:TcolorRef);
 begin
 Real_Cyan:=Real_min(1.0,Real_Cyan+Real_black);
 Real_Magenta:=Real_min(1.0,Real_Magenta+Real_black);
 Real_Yellow:=Real_min(1.0,Real_Yellow+Real_black);

 RGB_long:=rgb(
  round((1.0-Real_Cyan)*255),
  round((1.0-Real_Magenta)*255),
  round((1.0-Real_Yellow)*255));
 end; {CMYB_to_RGB}

function Obtenir_valeurs_Cyan_magenta_jaune_et_noir(une_couleur:tcolorref):string;
  var Real_Cyan,Real_Magenta,Real_Yellow,Real_black:real;
  begin
  RGB_to_CMYB(une_couleur,Real_Cyan,Real_Magenta,Real_Yellow,Real_black);
  Obtenir_valeurs_Cyan_magenta_jaune_et_noir:=
      'Cyan='+floattostrF(Real_Cyan*100,fffixed,4,1)+'% '+
      'Magenta='+floattostrF(Real_Magenta*100,fffixed,4,1)+'%'+
      'Jaune='+floattostrF(Real_Yellow*100,fffixed,4,1)+'% '+
      'Noir='+floattostrF(Real_black*100,fffixed,4,1)+'%';
   end; {Afficher_les_valeurs_Cyan_magenta_jaune_et_noi}

{La chaîne résultante permet, d'obtenir une somme de pourcentage égal à 100%}
function Obtenir_le_vrai_CMYN(une_color:tcolorref):string;
  var somme:real;
      Real_Cyan,Real_Magenta,Real_Yellow,Real_black:real;
      lst_cyan_magenta_jaune_et_noir:string;
  begin
  RGB_to_CMYB(une_color,Real_Cyan,Real_Magenta,Real_Yellow,Real_black);
  Somme:=Real_Cyan+Real_Magenta+Real_Yellow+Real_black;
    lst_cyan_magenta_jaune_et_noir:=
      'Cyan='+inttostr(round((Real_Cyan/somme)*100))+'% '+
      'Magenta='+inttostr(round((Real_Magenta/somme)*100))+'% '+
      'Jaune='+inttostr(round((Real_Yellow/somme)*100))+'% '+
      'Noir='+inttostr(round((Real_black/somme)*100))+'%';
  Obtenir_le_vrai_CMYN:=lst_cyan_magenta_jaune_et_noir;
  end;


Compatibilité : 1.1

A voir également

Ajouter un commentaire

Commentaires

japee
Messages postés
1803
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
7 juillet 2019
-
@ denisbertin :

Ce code est toujours aussi inexploitable pour quelqu'un d'autre que toi, mais je sais que tu ne comprends pas ce que je viens d'écrire.
De plus il n'a aucun intérêt pédagogique : les notions évoquées (R, G, B) sont très basiques.
Publie plutôt un tutoriel pour débutant, si tu penses maîtriser le sujet.
Je te relirai, si tu le désires, y compris pour la partie rédactionnelle (style, orthographe, etc.)


@ mon ami Cirec:

Salut Eric,
Hé oui, la nostalgie camarade.
Je traine ici de temps en temps, dans l'espoir fou d'une question pertinente, d'un code émoustillant, bref d'un truc qui donne l'envie (l'envie d'avoir envie, même...).
Oui, nous sommes les dinosaures agonisants d'un site complètement sclérosé, dont l'âme est partie en même temps que ceux qui l'ont animé (du latin "anima", et une pensée amicale pour notre ami Cari) pendant si longtemps.
Je ne me risquerai pas à les énumérer (de peur d'oublier quelqu'un), mais toi et moi savons parfaitement de qui il s'agit.
Sinon oui, Delphi, reste mon casse-tête préféré (ça vaut largement les mots fléchés).
Je n'y atteindrai jamais le niveau que j'aurais aimé, donc ça me laisse une marge de progression, et c'est très bien ainsi.
Bon, enfin, comme diraient les tontons flingueurs (amitiés à Kenavo s'il passe par là) : "on se risque sur le tout-venant" et on essaye de répondre au mieux à ceux qui méritent qu'on leur sacrifie un peu de notre temps.
Y'en a plus beaucoup...
Allez, bon courage, haut les coeurs, et faut pas mollir.
Amicalement, à l'année prochaine ^^
J-P
Whismeril
Messages postés
13520
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
21 juillet 2019
289 > japee
Messages postés
1803
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
7 juillet 2019
-
Bonsoir japee, le constat est malheureusement le même quelque soit le langage, j'ai fréquenté vbfrance, puis le forum c# à des heures plus glorieuses.

Publie plutôt un tutoriel pour débutant, si tu penses maîtriser le sujet.
ça ne va pas être possible dans un proche avenir. Le rachat par CCM a induit un changement radical concernant les tutoriels, pour en publier il faut à minima acquérir le statut de Contributeur, qui est attribué a des membres respectant aux mieux les règles de CodeS SourceS et de CCM (le statut étant valable sur tout les forums)
japee
Messages postés
1803
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
7 juillet 2019
> Whismeril
Messages postés
13520
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
21 juillet 2019
-
Bonsoir Whismeril,
oui, beaucoup de changements depuis que Nix a cédé CodeS-SourceS à CCM.
Je ne suis pas sûr qu'il reconnaisse son "bébé", si par hasard il avait l'idée saugrenue de venir voir ce qu'il est devenu.
Tout a un début et une fin... (mais ici l'agonie est lente et douloureuse).
> japee
Messages postés
1803
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
7 juillet 2019
-
"Pensée amicale" bien interceptée. ;)

A mon tour, tel le discobole, je vous en envoie une de mes plus nostalgiques.

Et puis hop ! Je me rétablis de la plus gracieuse des façons.
Whismeril
Messages postés
13520
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
21 juillet 2019
289 -
Bonjour Denis
D'une part le code que je vous envoie, est un "extrait de code sources"
je vais reformuler une autre fois un peu différemment, peut-être cette fois comprendras-tu (enfin à l’instar de Cirec, vu la quantité de remarques et de SourceS supprimées pour non respect des règles, j’ai un gros doute...) quand tu postes quoique ce soit sur CodeS SourceS ça doit fonctionner chez n’importe qui.
CodeS SourceS n’est pas ta sauvegarde personnelle.
Si ton code est dépendant d’autres codes que tu as écrit, alors tu postes un projet où tout est présent.
Ensuite je ne sais pas « qui » tu compares à Github, mais si c’est CodeS SourceS alors c’est une preuve supplémentaire que tu n’as toujours pas compris ce qu’est CodeS SourceS.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.