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
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 .
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);
Vous devez utiliser la méthode Color.FromArgb pour créer une nouvelle structure de couleur.
var newColor = Color.FromArgb(0xCC,0xBB,0xAA);
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);
Vous pourriez faire:
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());
}
}