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

C# Discussion :

[C#] Equivalent méthode RGB de Visual Basic


Sujet :

C#

  1. #1
    Membre confirmé
    Avatar de frechy
    Inscrit en
    Novembre 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2004
    Messages : 343
    Points : 511
    Points
    511
    Par défaut [C#] Equivalent méthode RGB de Visual Basic
    Bonjour,

    Pour définir une couleur de texte sous Word, je dois soit fournir un nom de couleur ex "blue", ou une valeur créée à partir de la fonction RGB de Visual Basic.

    Voici le genre de valeur retournée;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    14647365 = RGB(69,128,223)

    Donc à première vue, aucune correspondance entre les valeur RGB et la valeur retournée par la fonction. Je suis donc à la recherche d'une fonction similaire sous c# puisque sous Word cette fonction n'existe pas.
    J'ai essayé cette fonction;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.Drawing.Color.FromArgb(5,5,5)
    mais cette fonction ne retourne pas de valeur

    Voilà si quelqu'un a une idée

    Merci,

    Frechy

  2. #2
    Membre expérimenté
    Avatar de freddyboy
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2003
    Messages
    810
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2003
    Messages : 810
    Points : 1 696
    Points
    1 696
    Par défaut
    FromArgb retourne une structure Color.
    Et apres dans les property de cette structure, il n'y a pas ce que tu veux ?

    @+
    Someday I will be the most powerful Jedi !

    Freddyboy - Blog

  3. #3
    Membre confirmé
    Avatar de frechy
    Inscrit en
    Novembre 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2004
    Messages : 343
    Points : 511
    Points
    511
    Par défaut
    La seule propriété interessante est "Name" qui me renvoit pour les valeurs rgb 69,128,223 =>ff4580df

    Donc je ne susi pas plus avancé. Pour finir je vient d'aprendre que je devrai peut être traité des couleur "html" (avec le # devant). Enfin ca je trouverai bien comment passer d'un mode à l'autre...mais en attendant c est surtout ce fameux nombre 14647365 que j'éssaye d'obtenir.

    Je me demande si ceci: http://msdn.microsoft.com/library/fr...ssrgbTopic.asp ne serait pas la solution mais pas beaucoup de documentation, je n'arive pas à l'utiliser, je n'ai pas System.EnterpriseServices.BOID

  4. #4
    Membre expérimenté
    Avatar de freddyboy
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2003
    Messages
    810
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2003
    Messages : 810
    Points : 1 696
    Points
    1 696
    Par défaut
    tu dois avoir ce namespace en faisant ajouter sur les references de ton projet. Cherche un peu dans tous les onglets. J'ai pas verifier sur mon poste, mais je pense que c'est en std ...

    @+
    Someday I will be the most powerful Jedi !

    Freddyboy - Blog

  5. #5
    Membre confirmé
    Avatar de frechy
    Inscrit en
    Novembre 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2004
    Messages : 343
    Points : 511
    Points
    511
    Par défaut
    j'ai bien réussi à ajouter la référence, mais ce n'était pas ca

  6. #6
    Membre confirmé
    Avatar de frechy
    Inscrit en
    Novembre 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2004
    Messages : 343
    Points : 511
    Points
    511
    Par défaut
    c bon réponse donnée sur la newsgroup msdn

    Hi Frenchy,

    Given the R, G, and B values, the formula for the Color number is

    ((B * 256) + G) * 256 + R

    Be sure to do this arithmetic with 16-bit or 32-bit variables (Long data
    type in VBA) to prevent overflow.
    Sinon je me demandais comment transformer une couleur html en RGB?

  7. #7
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    salut frechy yavait longtemps
    vite fait en passant je pense qu'il s'agit d'une simple conversion de base ici vers un hexadecimal
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  8. #8
    Membre confirmé
    Avatar de frechy
    Inscrit en
    Novembre 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2004
    Messages : 343
    Points : 511
    Points
    511
    Par défaut
    yep...oui ca faisait longtemps, j'ai beaucoup moins de temps ...enfin demain c'est le lancement de VS2005, congé obligé 8)

    Pour en revenir à mon problème...j'ai trouvé le code en javascript;

    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
    function GiveDec(Hex)
    {
       if(Hex == "A")
          Value = 10;
       else
       if(Hex == "B")
          Value = 11;
       else
       if(Hex == "C")
          Value = 12;
       else
       if(Hex == "D")
          Value = 13;
       else
       if(Hex == "E")
          Value = 14;
       else
       if(Hex == "F")
          Value = 15;
       else
          Value = eval(Hex)
       return Value;
    }
    function GiveHex(Dec)
    {
       if(Dec == 10)
          Value = "A";
       else
       if(Dec == 11)
          Value = "B";
       else
       if(Dec == 12)
          Value = "C";
       else
       if(Dec == 13)
          Value = "D";
       else
       if(Dec == 14)
          Value = "E";
       else
       if(Dec == 15)
          Value = "F";
       else
          Value = "" + Dec;
       return Value;
    }
    function HexToDec()
    {
       Input = window.document.forms['ColorForm'].elements['HexInput'].value;
       Input = Input.toUpperCase();
     
       a = GiveDec(Input.substring(0, 1));
       b = GiveDec(Input.substring(1, 2));
       c = GiveDec(Input.substring(2, 3));
       d = GiveDec(Input.substring(3, 4));
       e = GiveDec(Input.substring(4, 5));
       f = GiveDec(Input.substring(5, 6));
     
       x = (a * 16) + b;
       y = (c * 16) + d;
       z = (e * 16) + f;
     
       window.document.forms['ColorForm'].elements['RedOutput'].value = x;
       window.document.forms['ColorForm'].elements['GreenOutput'].value = y;
       window.document.forms['ColorForm'].elements['BlueOutput'].value = z;
    }
    function DecToHex()
    {
       Red = window.document.forms['ColorForm'].elements['RedInput'].value;
       Green = window.document.forms['ColorForm'].elements['GreenInput'].value;
       Blue = window.document.forms['ColorForm'].elements['BlueInput'].value;
     
       a = GiveHex(Math.floor(Red / 16));
       b = GiveHex(Red % 16);
       c = GiveHex(Math.floor(Green / 16));
       d = GiveHex(Green % 16);
       e = GiveHex(Math.floor(Blue / 16));
       f = GiveHex(Blue % 16);
     
       z = a + b + c + d + e + f;
     
       window.document.forms['ColorForm'].elements['HexOutput'].value = z;
    }
    Vu que j'éssaye de produire un code au maximum optimisé, j'éssaye de trouver un moyen plus "court" (enfin là y'a dans les 2 sens). Je pensais trouver une méthode toute faite en .NET...

  9. #9
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    pas en C#, je crois avoir mis un article dans la Faq pour les conversions de base
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  10. #10
    Membre confirmé
    Avatar de frechy
    Inscrit en
    Novembre 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2004
    Messages : 343
    Points : 511
    Points
    511
    Par défaut
    bon voilà je viens d'avoir la réponse encore sur msdn lol

    Hi Frenchy,

    See
    http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/colors/colors.asp
    for the whole nine yards.

    The short version is that an HTML color number is really a string of three
    2-digit hex numbers, which represent red, green, and blue in that order:
    #RRGGBB.

    Here's some example code to do the conversion:

    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
    Sub ColorDemo()
       Dim HTMLcolor As String
       Dim R As Long, G As Long, B As Long
       Dim ColorNum As Long
     
       ' For example, "coral" is #FF7F50
       HTMLcolor = "FF7F50"
     
       ' extract each pair of characters from the
       ' string, prefix it with &H, and convert it
       ' to a Long value
       R = CLng("&H" & Mid$(HTMLcolor, 1, 2))
       G = CLng("&H" & Mid$(HTMLcolor, 3, 2))
       B = CLng("&H" & Mid$(HTMLcolor, 5, 2))
     
       ColorNum = ((B * 256) + G) * 256 + R
     
       Selection.Font.Color = ColorNum
    End Sub
    J'éssayerai de traduire ca en C# demain, mais ca semble bon

    Merci quand même

  11. #11
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    string HTMLcolor;
    long R;
    long G;
    long B;
    long ColorNum;
     
    HTMLcolor = "FF7F50";
    R = System.Convert.ToInt64("&H" + HTMLcolor.Substring(1, 2));
    G = System.Convert.ToInt64("&H" + HTMLcolor.Substring(3, 2));
    B = System.Convert.ToInt64("&H" + HTMLcolor.Substring(5, 2));
    ColorNum = ((B * 256) + G) * 256 + R;
    Selection.Font.Color = ColorNum;
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  12. #12
    Membre confirmé
    Avatar de frechy
    Inscrit en
    Novembre 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2004
    Messages : 343
    Points : 511
    Points
    511
    Par défaut
    Thanks c'était presque ca, juste qu'il fallait spécifier la base en paramètre (pas en rajoutant &H)

    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
    private long ColorTranslation(string HTMLcolor)
    {
     
    	long R; 
    	long G; 
    	long B; 
    	long ColorNum; 
     
    	R = System.Convert.ToInt64(HTMLcolor.Substring(0, 2),16); 
    	G = System.Convert.ToInt64(HTMLcolor.Substring(2, 2),16); 
    	B = System.Convert.ToInt64(HTMLcolor.Substring(4, 2),16); 
    	ColorNum = ((B * 256) + G) * 256 + R; 
     
    	return ColorNum;
    }

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

Discussions similaires

  1. [Débutant] Equivalent du mot-clé dynamic (C#) en Visual Basic
    Par Invité dans le forum VB.NET
    Réponses: 3
    Dernier message: 19/07/2014, 22h17
  2. [Débutant] Equivalence de fonction PHP en Visual Basic .net
    Par boby15000 dans le forum VB.NET
    Réponses: 5
    Dernier message: 04/09/2013, 23h09
  3. Réponses: 1
    Dernier message: 27/10/2008, 17h39
  4. Equivalence fonction Get de visual basic
    Par berpi dans le forum Débuter
    Réponses: 4
    Dernier message: 10/02/2008, 23h50
  5. Méthode ELECTRE I en Visual Basic
    Par LeDebutant212 dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 22/01/2008, 14h14

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