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

发布于 2024-12-11 17:12:12 字数 80 浏览 0 评论 0原文

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

I just want to know if there's any way to create a color, given a RGB, without importing System.Drawing. I want to use this color to fill some rectangles I have created.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

此岸叶落 2024-12-18 17:12:12

您的意思是您想要一个颜色结构来存储 rg 和 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));
        }
    }
}

注:纯手写,可能有错误。

You mean you would like a color struct that will store for you r g and b values and helps you to convert it to a 32 bit integer?

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

Note: just written by hand, there may be errors.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文