it-swarm.com.ru

Установите значения 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

69
Sudantha

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

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

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

127
Darin Dimitrov

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

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

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

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

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

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

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

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

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