Установите Систему.Рисунок.Значение цвета


Привет как настроить 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 значения

6 68

6 ответов:

вы можете создать цвет с помощью статического FromArgb способ:

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

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

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

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

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

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

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

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

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

вы могли бы сделать:

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