Задайте значения System.Drawing.Color

Привет, как установить значения R G B в System.Drawing.Color.G?

который похож на System.Drawing.Color.G=255;, не допускается, поскольку его только чтение

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

Мне просто нужно создать объект Color, назначив пользовательские значения R G B

Ответ 1

Вы можете создать цвет, используя статический метод FromArgb:

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

Вы также можете указать альфу, используя следующую перегрузку.

Ответ 2

Структура Color неизменяема (поскольку все структуры должны быть действительно), что означает, что значения его свойств не могут быть изменены после создания определенного экземпляра.

Вместо этого вам нужно создать новый экземпляр структуры со значениями свойств, которые вы хотите. Поскольку вы хотите создать цвет, используя его значения RGB компонента, вам необходимо использовать метод FromArgb:

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

Ответ 3

Вы должны использовать метод Color.FromArgb для создания новой цветовой структуры

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

Ответ 4

Вы можете сделать расширение, чтобы просто изменить один цветовой компонент

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

то вы можете использовать это:

  yourColor = yourColor.ChangeG(100);

Ответ 5

Вы можете сделать:

Color c = Color.FromArgb(red, green, blue); //red, green and blue are integer variables containing red, green and blue components

Ответ 6

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());
        }
    }