如何在不使用System.Drawing的情况下生成颜色

时间:2011-10-22 02:27:02

标签: c# colors system.drawing system.drawing.color

我只是想知道在给定RGB的情况下是否有任何方法可以创建颜色,而无需导入System.Drawing。我想用这种颜色来填充我创建的一些矩形。

1 个答案:

答案 0 :(得分:2)

你的意思是你想要一个颜色结构,它将为你存储r g和b值,并帮助你将它转换为32位整数?

public struct MyColor
{
    public int Value;

    public MyColor(int a, int r, int g, int b)
    {
        this.Value = ((a & 0xFF) << 24) | ((r & 0xFF) << 16) | ((g & 0xFF) << 8) | (b & 0xFF);
    }

    public MyColor(int r, int g, int b) :
        this(255, r, g, b)
    {
    }

    public int A
    {
        get
        {
            return (byte) (this.Value >> 24);
        }
        set
        {
            this.Value = (this.Value & ~(0xFF << 24)) | ((value & 0xFF) << 24);
        }
    }

    public int R
    {
        get
        {
            return (byte) (this.Value >> 16);
        }
        set
        {
            this.Value = (this.Value & ~(0xFF << 16)) | ((value & 0xFF) << 16);
        }
    }

    public int G
    {
        get
        {
            return (byte) (this.Value >> 8);
        }
        set
        {
            this.Value = (this.Value & ~(0xFF << 8)) | ((value & 0xFF) << 8);
        }
    }

    public int B
    {
        get
        {
            return (byte) (this.Value);
        }
        set
        {
            this.Value = (this.Value & ~(0xFF)) | ((value & 0xFF));
        }
    }
}

注意:只是手写,可能会有错误。