IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Delphi Discussion :

RGB to TSL - TSL to RGB


Sujet :

Contribuez Delphi

  1. #1
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut RGB to TSL - TSL to RGB
    Bonjour,
    Je cherchais comment rendre une couleur de départ en couleur pastel. Je me suis rendu compte qu'une couleur pastelle avait une luminausité de 200 minimum.

    En cherchant sur le net j'ai trouvé pas mal de procédure, après avoir pioché partout j'en est repris plusieur que j'ai corrigé (enfin pas beaucoup).

    Le but de la manoeuvre de cet unité est de transformer une couleur de base en pastel.

    Créer un form, poser 2 panel (panel1 et panel2) relié la procédure Doubleclique du panel1 de l'unit.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls, StdCtrls, Math;
    
    type
      TForm1 = class(TForm)
        ColorDialog1: TColorDialog;
        Panel1: TPanel;
        Panel2: TPanel;
        Procedure RGB_To_TSL(R, G, B: Integer; Out T, S, L: Integer);
        Procedure TSL_To_RGB(T, S, L: Integer; Out R, G, B: Integer);
        procedure Panel1DblClick(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.Panel1DblClick(Sender: TObject);
    Var
    T,L,S : Integer;
    R,G,B: Integer;
    begin
    
      if (ColorDialog1.Execute) then
      Begin
        Panel1.Color := ColorDialog1.Color; // On récupère la valeur 
    
        RGB_To_TSL(
        GetRValue(ColorToRGB(ColorDialog1.Color)),
        GetGValue(ColorToRGB(ColorDialog1.Color)),
        GetBValue(ColorToRGB(ColorDialog1.Color)),
        T,S,L);
    
        TSL_To_RGB(T,S,210,R,G,B); // On force la luminausité à 210 pour le pastel
    
        Panel2.Color := RGB(R,G,B);
    
      end;
    end;
    
    Function Htorgb(n1, n2, hue: word): word;
    Const
      HLSMAX = 240;
    Begin
    
      If hue < 0 Then hue := HLSMAX + hue;
      If hue > HLSMAX Then hue := hue - HLSMAX;
    
      If hue < ((HLSMAX * 2) Div 3) Then
        Begin
          If hue < (HLSMAX Div 2) Then
            Begin
              If hue < (HLSMAX Div 6) Then
                result := (n1 + (((n2 - n1) * hue + (HLSMAX Div 12)) Div (HLSMAX Div
                6)))
              Else result := n2;
            End
          Else
            result := (n1 + (((n2 - n1) * (((HLSMAX * 2) Div 3) - hue) + (HLSMAX Div
              12)) Div (HLSMAX Div 6)));
        End
      Else
        result := n1;
    End;
    
    //
    // Trouvé sur se lien PAr CIREC
    // J'ai corriger le S et le L qui était à l'envers
    
    Procedure Tform1.RGB_To_TSL(R, G, B: Integer; Out T, S, L: Integer);
    Const
      HLSMAX            = 240;
      RGBMAX            = 255;
    Var
      rgb               : Array[1..3] Of byte;
      cMax, cMin        : byte;
      i                 : byte;
      Rdelta, Gdelta, Bdelta: integer;
    Begin
      rgb[1] := r;
      rgb[2] := g;
      rgb[3] := b;
    
      cMax := rgb[1];
      cMin := rgb[1];
    
      For i := 2 To 3 Do
        Begin
          If cMax < rgb[i] Then cMax := rgb[i];
          If cMin > rgb[i] Then cMin := rgb[i];
        End;
      L := (((cMax + cMin) * HLSMAX) + RGBMAX) Div (2 * RGBMAX);
      If cMax = Cmin Then
        Begin
          S := 0;
          T := 160;
        End
      Else
        Begin
          If (L <= (HLSMAX Div 2)) Then
            Begin
              S := (((cMax - cMin) * HLSMAX) + ((cMax + cMin) Div 2)) Div (cMax +
                cMin);
            End
          Else
            Begin
              S := (((cMax - cMin) * HLSMAX) + ((2 * RGBMAX - cMax - cMin) Div 2))
                Div (2 * RGBMAX - cMax - cMin);
            End;
    
          Rdelta := (((cMax - r) * (HLSMAX Div 6)) + ((cMax - cMin) Div 2)) Div (cMax
            - cMin);
          Gdelta := (((cMax - g) * (HLSMAX Div 6)) + ((cMax - cMin) Div 2)) Div (cMax
            - cMin);
          Bdelta := (((cMax - b) * (HLSMAX Div 6)) + ((cMax - cMin) Div 2)) Div (cMax
            - cMin);
    
          If r = cMax Then T := Bdelta - Gdelta
          Else If g = cMax Then T := (HLSMAX Div 3) + Rdelta - Bdelta
          Else T := ((2 * HLSMAX) Div 3) + Gdelta - Rdelta;
          If T < 0 Then T := HLSMAX + T;
        End;
    End;
    
    //
    // Trouvé sur se lien PAr CIREC
    
    Procedure TForm1.TSL_To_RGB(T, S, L: Integer; Out R, G, B: Integer);
    Const
      HLSMAX            = 240;
      RGBMAX            = 255;
    Var
      Magic1, Magic2    : word;
    Begin
      If S = 0 Then
        Begin
          r := (L * RGBMAX) Div HLSMAX;
          g := r;
          b := r;
        End
      Else
        Begin
          If L <= (HLSMAX Div 2) Then
            Begin
              Magic2 := (L * (HLSMAX + S) + (HLSMAX Div 2)) Div HLSMAX;
            End
          Else
            Begin
              Magic2 := L + S - ((L * S) + (HLSMAX Div 2)) Div HLSMAX;
            End;
    
          Magic1 := 2 * L - Magic2;
          r := (Htorgb(Magic1, Magic2, T + (HLSMAX Div 3)) * RGBMAX + (HLSMAX Div 2))
            Div HLSMAX;
          g := (Htorgb(Magic1, Magic2, T) * RGBMAX + (HLSMAX Div 2)) Div HLSMAX;
          b := (Htorgb(Magic1, Magic2, T - (HLSMAX Div 3)) * RGBMAX + (HLSMAX Div 2))
            Div HLSMAX;
        End;
    End;
    
    
    End.
    
    
    end.
    Je n'ai rien inventé, les procédures trouvées avaient elle même été récupéré.

    Je donne juste l'info, car je me suis pris la tête pendant 3 heures, et je pense que cela peu aider.

  2. #2
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Merci pour ta participation
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  3. #3
    Membre chevronné

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Points : 1 765
    Points
    1 765
    Par défaut
    Salut !

    Je suis assez dégouté, apres avoir cherché tres longtemps CETTE procedure, je me suis décidé a la faire tout seul avec Wikipedia !

    Mais je ne me souviens plus si HSL c'est l'anglais de TSL (Teinte Saturation Luminosité) ...

    Donc la je vous donne une Unité que j'ai fait, assez utile pour tout ce qui est retouche d'image ...

    Si vous avez des idées de procedures, ou des remarques, faites le moi savoir !
    Fichiers attachés Fichiers attachés

  4. #4
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Merci
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  5. #5
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    Hehe c'est sympa de mettre un liens vers ma source (sans me citer par contre)
    il est vrai que Cirec m'avait bien aidé pour le coups à déboguer les fonctions.

    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Vous savez quand même que le code est fourni dans l'aide SDK de Delphi ?
    voir la rubrique : "Converting Colors Between RGB and HLS (HBS)" que l'on trouve avec la recherche en indiquant "RGB HLS" code qui évidemment présent dans Delphi dans GraphUtil avec les fonctions ColorRGBToHLS et ColorHLSToRGB ... ah réinventez la roue carrée c'est vrai que c'est bien fun !
    Et déclarer que c'est "son code" lorsque l'on a juste traduit le code fourni par la SDK Win32 ou par Delphi , je trouve qu'il vaut mieux se taire !
    Donc redonnons à César, ce qui appartient à J. Foley and A.Van Dam !

    Même si l'aide de Delphi 7 est très très bien fournie, il y a beaucoup d'unités qui ne sont pas documentées et dans tous les domaines, Graphiques, Encodage, Math, Date, Internet, ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  7. #7
    Membre chevronné

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Points : 1 765
    Points
    1 765
    Par défaut
    Yeah, merci Shai !

    Mais franchement, j'ai eu beau chercher (aide Delphi, Dev.com, google ...), j'ai pas trouvé tout ca ! Mais ca m'étonnais aussi que Delphi ait pas pensé a ca ... En tout cas super, et merci (je ne connaissais meme pas l'existence de ces unités)

  8. #8
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    @mick605, comme moi, j'ai aussi cherché, plus par curiosité, que par besoin, et depuis 2-3 ans, je fouille dans le répertoire Delphi, et l'on trouve son bonheur, comme un jour, j'ai trouvé EncdDecd pour l'encodage en Base64, falait bien que cela existe pour les Header HTTP ou le SOAP ... dont tu ne trouve pas la documentation de la VCL mais la version Indy qui a été réécrite ... tu ne trouves pas tout mais tu as certains basiques insoupçonnés ... d'ailleurs dans le genre l'unité TypInfo n'est pas la mieux documentée ... ou les fonctions TryStr ... leur apparition est survenu d'un coup, et pas évident de savoir qu'elle existait déjà avant qu'elle soit documentée ...

    [HS]
    Je me dois de conserver mon statut de Troll , donc je dois raler un minimum et j'avoue qu'une revendication dans ce genre m'a titillé mes neurones de chieur
    [/HS]
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  9. #9
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    je rejoins Shay pour dire qu'il existe un grand nombre d'unité non documentée sur delphi et c'est dommage.

    si on ne cherche pas par soit même dans le repertoire Source ou dans l'aide (pour les unité ou fonction qui sont "citée" mais pas expliquées) on passe a coté de nombreuses choses utile.

    rien que dans System ou SysUtils grand nombre de fonctions passent inaperçue.

    les unités comme DateUtils, StrUtils, GraphUtils sont souvent ignorées. Beaucoup n'installent pas non plus l'aide du SDK windows pourtant trés utile!
    Beaucoup ne savent pas qu'on peut faire F1 sur l'identifiant d'une fonction pour lancer l'aide sur cette fonction.
    Beaucoup non pas la curiosité de faire "chercher la declaration" (clique droit sur un elements du code) pour aller voir le contenus et alentours dans l'unité.

    C'est l'exemple même de TypInfo et IntfInfo ... si on ne vas pas voir dedans, difficile de savoir a quoi elles servent.
    Tout comme la ShellApi et autre truc commençant par sh! pourtant trés utile!

    [hs]
    Aucuns malentendus entre nous, c'est souvent sur des quiproquos qu'on apprend à se connaitre
    Donc sans rancune.
    [/hs]
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

  10. #10
    Membre chevronné

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Points : 1 765
    Points
    1 765
    Par défaut
    Tiens, j'avais meme pas pensé a aller chercher dans le répertoire "Source" .... La prochaine fois, j'irais

  11. #11
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 693
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 693
    Points : 13 126
    Points
    13 126
    Par défaut
    Citation Envoyé par Dr.Who Voir le message
    ... j'aurais pourtant juré avoir écris "ma source" (...) et non "MON code" ...
    Plutôt mysogine ton truc .

  12. #12
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    j'aurais plutôt dis de la misandrie ...
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

  13. #13
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Salut Docteur Who je suis désolé pour avior homis de te cité. Ceci dit Cirec ne le dit pas non plus...

    Bref, il est à noter que j'ai juste corriger une erreur qui n'ajoute rien à ce travail fabuleux. (enfin si tu corrige pas sa marche à l'envers lololol)

    bye...

  14. #14
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Et 10 ans plus tard je m'y intéresse

    voici une version plus compacte et qui optimise les calculs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
     
    procedure RGBtoHSL(R, G, B: Integer; var H, S, L: Integer);
    var
      min, max: Integer;
      delta: Integer;
      dr, dg, db: Integer;
    begin
      max := System.Math.Max(System.Math.Max(R, G), B);
      min := System.Math.Min(System.Math.Min(R, G), B);
      delta := max - min;
     
      S := max + min;
      L := ((S * 240) + 255) div 510;
     
      if delta = 0 then
      begin
        S := 0;
        H := 160;
      end else begin
        if L > 120 then
          S := 510 - S;
        S := ((delta * 240) + (S div 2)) div S;
     
        dr := (((max - R) * 40) + (delta div 2) ) div delta;
        dg := (((max - G) * 40) + (delta div 2) ) div delta;
        db := (((max - B) * 40) + (delta div 2) ) div delta;
     
        if R = max then
          H := db - dg
        else
        if G = max then
          H := 80 + dr - db
        else // B == max
          H := 160 + dg - dr;
     
        if (H < 0) then
          H := H + 240
        else
        if (H > 240) then
          H := H - 240;
      end;
    end;
     
    function HSLToChroma(H, S, L: Integer): Integer;
    begin
      if H < 0 then
         H := H + 240
      else
      if H > 240 then
        H := H - 240;
     
      if H < 40 then
        Inc(L, ((S - L) * H + 20) div 40)
      else
      if H < 120 then
        L := S
      else
      if H < 160 then
        Inc(L, ((S - L) * (160 - H) + 20) div 40 );
     
      Result := ((L * 255) + 120) div 240;
    end;
     
    procedure HSLtoRGB(H, S, L: Integer; var R, G, B: Integer);
    var
      magic1: Integer;
      magic2: Integer;
    begin
      if S = 0 then
      begin
        R := (L * 255) div 240;
        G := R;
        B := R;
      end else begin
        if L <= 120 then
          magic2 := (L * (240 + S) + 120) div 240
        else
          magic2 := L + S - ((L * S) + 120) div 240;
        magic1 := 2 * L - magic2;
     
        R := HSLToChroma(H + 80, magic2, magic1);
        G := HSLToChroma(H     , magic2, magic1);
        B := HSLToChroma(H - 80, magic2, magic1);
      end;
    end;
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  15. #15
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Question bête. Quel genre de choses peut-on faire avec ces fonctions ?
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  16. #16
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Citation Envoyé par Roland Chastain Voir le message
    Question bête. Quel genre de choses peut-on faire avec ces fonctions ?
    Alors j'avais un besoin très spécifique, je génère une icône représentant une annotation, c'est un carré de couleur avec le coin plié dans une couleur plus sombre que la couleur de base qui est paramétrable... Ok mais quelle couleur prendre pour ce coin ?

    En partant de RGB c'est compliqué, alors qu'en HSL il suffit de baisser L (luminosité) pour avoir une couleur dans la même gamme mais en plus sombre... Du coup je transforme ma couleur en HSL, je baisse L et la retransforme en RGB.

    Exemple, je pars de la couleur orangée RGB(255, 176, 25) en réduisant L de 40 j'obtiens RGB(196, 128, 0).

    Nom : RGBHSL.jpg
Affichages : 539
Taille : 8,4 Ko
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  17. #17
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Vu. Merci Paul.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

Discussions similaires

  1. [XL-2010] Couleur ligne avec long non RGB (Convertir Couleur Long en RGB)
    Par bastou93 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/07/2011, 09h42
  2. Code TSL vers RGB en VBA
    Par flamel dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 23/05/2011, 16h48
  3. Convertir une couleur RGB au format TSL
    Par bobyx dans le forum Assembleur
    Réponses: 4
    Dernier message: 19/11/2007, 01h53
  4. [Kylix] RGB d'un pixel
    Par Kusanagi dans le forum EDI
    Réponses: 1
    Dernier message: 13/11/2002, 20h33
  5. TObject->Color et composantes RGB
    Par Flo. dans le forum C++Builder
    Réponses: 10
    Dernier message: 14/06/2002, 17h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo