代码之家  ›  专栏  ›  技术社区  ›  George Johnston

颜色的数字表示

c#
  •  2
  • George Johnston  · 技术社区  · 14 年前

    在.net中用数字表示颜色的最佳格式是什么,这样我就不必使用color对象了?现在我将颜色保存为html表示,但是为了使用它,我必须解析它。

    我正在处理一个800x600画布,它为每个像素存储一个颜色值,我需要能够尽可能快地渲染出颜色,而不必将我的应用程序扩展到存储500k+个颜色对象。

    4 回复  |  直到 14 年前
        1
  •  6
  •   Reed Copsey    14 年前

    您可以使用标准的int32来存储颜色。

    这特别好,因为框架中的颜色类型直接通过 Color.ToArgb() Color.FromArgb() 以及类似的方法。

        2
  •  4
  •   Jason Williams    14 年前

    颜色是24位的rgb或32位的rgb a值-很容易用32位的int表示。颜色结构只是将其包装起来以使访问更方便,但如果您使用低级别(位图像素中的像素或调色板数据)则仅此而已。

    如果你在存储 多种颜色 然后使用 位图 只需设置/读取感兴趣位置的像素值。

        3
  •  1
  •   Justin Ethier    14 年前

    颜色结构的实例只有4个成员(alpha、red、green、blue),每个成员的类型 Byte . 所以你可以用一个32位的整数来存储每种颜色,但是你可能不知道你最终会节省多少内存,如果有的话…

    当然,如果您不需要全部4个颜色通道,可以使用较小的结构来存储所需的通道(例如,只需使用一个字节来存储红色),并节省大量空间。

        4
  •  0
  •   Will Marcouiller    14 年前

    这是你需要的吗?

    1. http://www.w3.org/TR/REC-html40/types.html#h-6.5
    2. CSS Colour Module Level 3

    您只需要使用color.fromArgB()和color.toArgB()就可以得到您的颜色。