webentwicklung-frage-antwort-db.com.de

Legen Sie die System.Drawing.Color-Werte fest

Hallo, wie man R G B Werte in System.Drawing.Color.G?

das ist wie System.Drawing.Color.G=255; ist nicht erlaubt, da es nur lesbar ist

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

ich muss nur ein Color -Objekt erstellen, indem ich benutzerdefinierte R G B Werte

73
Sudantha

Sie können eine Farbe mit der static FromArgb -Methode erstellen:

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

Sie können das Alpha auch mit nach Überladung angeben.

131
Darin Dimitrov

Die Color -Struktur ist unveränderlich (wie es eigentlich bei allen Strukturen der Fall sein sollte), was bedeutet, dass die Werte ihrer Eigenschaften nicht mehr geändert werden können Instanz wurde erstellt.

Stattdessen müssen Sie eine new Instanz der Struktur mit den gewünschten Eigenschaftswerten erstellen. Da Sie eine Farbe mit den RGB-Komponentenwerten erstellen möchten, müssen Sie die FromArgb -Methode verwenden:

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

Sie müssen die Color.FromArgb-Methode verwenden, um eine neue Farbstruktur zu erstellen

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

Sie können eine Erweiterung vornehmen, um nur eine Farbkomponente zu ändern

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

dann kannst du das benutzen:

  yourColor = yourColor.ChangeG(100);
4
Stecya

Du könntest es tun:

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