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

Langage Delphi Discussion :

Hexadecimal vers Cardinal


Sujet :

Langage Delphi

  1. #1
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 268
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 268
    Points : 41 671
    Points
    41 671
    Billets dans le blog
    64
    Par défaut Hexadecimal vers Cardinal
    Bonjour,

    Aujourd'hui je sèche, je tente de convertir une chaine (une couleur) #ED2939 en TAlphaColor, ce doit être simple mais je ne vois pas le bout du tunnel

    Oubliez, il suffit de remplacer # par $ MaCouleur:=StrToInt(StringReplace('#ED2939','#','$',[]));

  2. #2
    Membre éprouvé
    Avatar de Cirec
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 467
    Points : 1 073
    Points
    1 073
    Par défaut
    Bonjour,

    je ne suis pas certain d'avoir bien compris ta demande mais
    peut être que ceci suffira:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Color := TAlphaColo;r($ED2939)
    //ou avec le canal Alpha = TAlphaColor($FF000000)
    Color := Alpha or TAlphaColor($ED2939);
    Cordialement,

    @+

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 268
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 268
    Points : 41 671
    Points
    41 671
    Billets dans le blog
    64
    Par défaut
    Merci, je suis dans le brouillard ce matin, c'est le # qui me fichait dedans
    l'objectif était dessiner le drapeau (français) à partir de ça
    <?xml version="1.0" encoding="UTF-8"?>
    <svg xmlns="http://www.w3.org/2000/svg" width="900" height="600">
    <rect width="900" height="600" fill="#ED2939"/>
    <rect width="600" height="600" fill="#fff"/>
    <rect width="300" height="600" fill="#002395"/></svg>
    ce qui est maintenant chose faite

  4. #4
    Membre éprouvé
    Avatar de Cirec
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 467
    Points : 1 073
    Points
    1 073
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Merci, je suis dans le brouillard ce matin, ...
    je suis donc dans mon rôle en tant que "membre éclairé"


    Cordialement,
    @+

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 268
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 268
    Points : 41 671
    Points
    41 671
    Billets dans le blog
    64
    Par défaut
    Pour preuve du brouillard, je crois qu'il y a un lézard (corrigé depuis )
    Nom : france.PNG
Affichages : 346
Taille : 4,9 Ko
    et même deux
    Nom : belgique.PNG
Affichages : 345
Taille : 2,9 Ko
    mais où se cache le Jaune !

  6. #6
    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 : 55
    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 457
    Points
    28 457
    Par défaut
    pour info les couleurs Web #rrggbb sont inversées par rapport aux couleurs Windows $bbggrr (rr et bb sont inversés, mais je ne sais jamais lequel est r et lequel et b )

    tu peux aussi avoir une couleur #rgb qui donne $bbggrr

    et même #aarrggbb qui donne $aabbggrr

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 268
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 268
    Points : 41 671
    Points
    41 671
    Billets dans le blog
    64
    Par défaut
    Bonjour,

    vous avez tous deux raisons
    1- @Cirec j'aurais dû écrire MaCouleur:=StrToInt(StringReplace('#ED2939','#','$FF',[])); pour ajouter la couche Alpha

    2- @Paul je n'avais testé que Bleu (#ff0000), le blanc (#f2f2f2), Rouge (#0000ff), tu remarqueras donc le pourquoi de l'inversion

    évidemment je n'ai pas pris en compte la possibilité que la couche Alpha soit présente ( loi de Murphy)
    il va falloir que je pousse mes investigations sur la norme SVG si je veux pallier tout les cas , je vais me contenter pour l'instant de ce tuto mais cela déborde largement de ce que je veux faire (et des possibilités du TPath de Delphi)

  8. #8
    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 : 55
    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 457
    Points
    28 457
    Par défaut
    en fait tu peux aussi avoir la couleur sous la forme : rgb(r, g, b) , ou par son nom : red

    voici ce que j'utilise:

    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
     
    function WebToColor(const Color: string): Integer;
    begin
      if Color = '' then
        Exit(0);
      case Color[1] of
        'r': if rgbColor(Color, Result) then Exit;
        '#': if sharpColor(Color, Result) then Exit;
      else
        if IdentToColor('cl' + Color, Result) then
          Exit;
      end;
      raise Exception.Create('Unknow color ' + Color);
    end;
     
    function rgbColor(const Str: string; var Color: Integer): Boolean;
    var
      Index: Integer;
      rgb  : array[0..2] of Integer;
      cl   : Integer;
    begin
      Result := False;
      if Copy(str, 1, 4) <> 'rgb(' then
        Exit;
      Index := 5;
      cl := 0;
      FillChar(rgb, SizeOf(rgb), 0);
      while Index < Length(Str) do
      begin
        case Str[Index] of
          ' ' : ;
          ',' : if cl < 2 then Inc(cl) else Exit;
          ')' : Break;
          '0'..'9':
          begin
            rgb[cl] := 10 * rgb[cl] + Ord(Str[Index]) - Ord('0');
            if rgb[cl] > 255 then
              Exit;
          end
        else
          Exit;
        end;
        Inc(Index);
      end;
      Color := rgb[2] shl 16 + rgb[1] shl 8 + rgb[0];
      Result := True;
    end;
     
    function sharpColor(const Str: string; var Color: Integer): Boolean;
    var
      i: Integer;
      n: Integer;
      c: Integer;
      d: Integer;
    begin
      Result := False;
      if Str[1] = '#' then
      begin
        case Length(Str) of
          4: n := 1;
          7: n := 2;
        else
          Exit;
        end;
        i := 2;
        Color := 0;
        for c := 0 to 2 do
        begin
          for d := 1 to n do
          begin
            Color := 16 * Color;
            case Str[i] of
              '0'..'9': Inc(Color, Ord(Str[i]) - Ord('0'));
              'a'..'f': Inc(Color, Ord(Str[i]) - Ord('a'));
              'A'..'F': Inc(Color, Ord(Str[i]) - Ord('F'));
            else
              Exit;
            end;
          end;
          if n = 1 then
            Color := 16 * Color + Color and $F;
        end;
        Result := True;
      end;
    end;

  9. #9
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 268
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 268
    Points : 41 671
    Points
    41 671
    Billets dans le blog
    64
    Par défaut
    En fait je suis perturbé par ça
    Nom : Capture.PNG
Affichages : 316
Taille : 47,2 Ko
    c'est l'affichage avec le # qui me "choque"

    pour obtenir ce concepteur de pinceaux je me suis bêtement trompé et cliqué sur Stroke
    Bon avantage j'ai quand même enfin compris à quoi correspondait le Fill.Resource.StyleResource

  10. #10
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 268
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 268
    Points : 41 671
    Points
    41 671
    Billets dans le blog
    64
    Par défaut
    En fouillant dans ce même dialogue j'ai découvert la fonction StringToAlphaColor contenue dans System.UIConsts

    Qui permet de saisir des choses comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Rectangle1.Fill.Color:=StringToAlphaColor(red); // pour le nom c'est réglé ;)
    Rectangle1.Fill.Color:=StringToAlphaColor('#FFED2939'); // un rouge "sale" :furieux: il faut inverser les canaux
    Rectangle1.Fill.Color:=StringToAlphaColor('#FF3929ED'); // le bleu recherché

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 01/03/2017, 16h29
  2. Hexadecimal vers adrese IP
    Par colorid dans le forum Langage
    Réponses: 9
    Dernier message: 24/02/2012, 16h15
  3. Charactère vers Hexadecimal
    Par walacouper dans le forum z/OS
    Réponses: 3
    Dernier message: 04/06/2009, 16h59
  4. Pourquoi les couleurs hexadecimals tendent vers le bleu ?
    Par Coussati dans le forum Débuter
    Réponses: 4
    Dernier message: 03/06/2008, 12h37
  5. conversion hexadecimal vers string
    Par acognard dans le forum C#
    Réponses: 1
    Dernier message: 16/10/2007, 17h30

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