web-dev-qa-db-fra.com

Définir les valeurs System.Drawing.Color

Salut comment mettre R G B valeurs dans System.Drawing.Color.G?

qui est comme System.Drawing.Color.G=255; n'est pas autorisé car il est en lecture seule

Property or indexer 'System.Drawing.Color.G' cannot be assigned toit is read only

j'ai juste besoin de créer un objet Color en assignant une fonction personnalisée R G B valeurs

73
Sudantha

Vous pouvez créer une couleur en utilisant la méthode statique FromArgb :

Color redColor = Color.FromArgb(255, 0, 0);

Vous pouvez également spécifier l'alpha à l'aide de surcharge suivante .

131
Darin Dimitrov

La structure Color est immuable (comme toutes les structures devraient l'être), ce qui signifie que les valeurs de ses propriétés ne peuvent plus être modifiées une fois instance a été créée.

Au lieu de cela, vous devez créer une instance new de la structure avec les valeurs de propriété souhaitées. Puisque vous voulez créer une couleur en utilisant ses valeurs RVB composantes, vous devez utiliser la méthode FromArgb :

Color myColor = Color.FromArgb(100, 150, 75);
11
Cody Gray

Vous devez utiliser la méthode Color.FromArgb pour créer une nouvelle structure de couleur.

var newColor = Color.FromArgb(0xCC,0xBB,0xAA);
9

Vous pouvez faire une extension pour changer juste un composant de couleur

static class ColorExtension
{
    public static Color ChangeG(Color this color,byte g) 
    {
        return Color.FromArgb(color.A,color.R,g,color.B);
    }
}

alors vous pouvez utiliser ceci:

  yourColor = yourColor.ChangeG(100);
4
Stecya

Vous pourriez faire:

Color c = Color.FromArgb(red, green, blue); //red, green and blue are integer variables containing red, green and blue components
2
FIre Panda
using System;
using System.Drawing;
public struct MyColor
    {
        private byte a, r, g, b;        
        public byte A
        {
            get
            {
                return this.a;
            }
        }
        public byte R
        {
            get
            {
                return this.r;
            }
        }
        public byte G
        {
            get
            {
                return this.g;
            }
        }
        public byte B
        {
            get
            {
                return this.b;
            }
        }       
        public MyColor SetAlpha(byte value)
        {
            this.a = value;
            return this;
        }
        public MyColor SetRed(byte value)
        {
            this.r = value;
            return this;
        }
        public MyColor SetGreen(byte value)
        {
            this.g = value;
            return this;
        }
        public MyColor SetBlue(byte value)
        {
            this.b = value;
            return this;
        }
        public int ToArgb()
        {
            return (int)(A << 24) || (int)(R << 16) || (int)(G << 8) || (int)(B);
        }
        public override string ToString ()
        {
            return string.Format ("[MyColor: A={0}, R={1}, G={2}, B={3}]", A, R, G, B);
        }

        public static MyColor FromArgb(byte alpha, byte red, byte green, byte blue)
        {
            return new MyColor().SetAlpha(alpha).SetRed(red).SetGreen(green).SetBlue(blue);
        }
        public static MyColor FromArgb(byte red, byte green, byte blue)
        {
            return MyColor.FromArgb(255, red, green, blue);
        }
        public static MyColor FromArgb(byte alpha, MyColor baseColor)
        {
            return MyColor.FromArgb(alpha, baseColor.R, baseColor.G, baseColor.B);
        }
        public static MyColor FromArgb(int argb)
        {
            return MyColor.FromArgb(argb & 255, (argb >> 8) & 255, (argb >> 16) & 255, (argb >> 24) & 255);
        }   
        public static implicit operator Color(MyColor myColor)
        {           
            return Color.FromArgb(myColor.ToArgb());
        }
        public static implicit operator MyColor(Color color)
        {
            return MyColor.FromArgb(color.ToArgb());
        }
    }
1
user2991535