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
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.
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);
Sie müssen die Color.FromArgb-Methode verwenden, um eine neue Farbstruktur zu erstellen
var newColor = Color.FromArgb(0xCC,0xBB,0xAA);
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);
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
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());
}
}