WebCAD-Lib-TS API 文档 - v1.0.0
    Preparing search index...

    Class ColorConverter

    颜色转换器类

    用于CAD系统中的颜色索引与十六进制颜色值之间的转换。 这个类主要用于处理CAD系统中的标准颜色索引(如AutoCAD的ACI颜色索引) 与RGB十六进制颜色值之间的转换。支持256种标准颜色的映射。

    主要功能:

    1. 将颜色索引转换为十六进制字符串格式
    2. 将十六进制数值转换为CSS颜色字符串格式
    3. 根据颜色索引获取对应的RGB十六进制数值
    4. 支持特殊颜色处理(如ByLayer、ByBlock等)
    5. 支持RGB真彩色(使用标记位区分)

    RGB颜色存储格式:

    • RGB颜色只占用24位(0~16,777,215),我们利用第25位作为真彩色标记位
    • 索引颜色(ACI):直接存储原值(范围 0-256)
    • RGB颜色:存储为 RGB整数值 + 标记位偏移量(0x1000000 = 16777216)
    Index

    Constructors

    Properties

    RGB_MARKER: number = 0x1000000

    RGB颜色标记位偏移量

    RGB颜色值会加上这个偏移量来区分索引颜色。 值为 0x1000000 = 16777216 = 2^24

    Methods

    • 检查colorIndex是否为RGB真彩色

      Parameters

      • color: number

        颜色索引值

      Returns boolean

      如果是RGB颜色返回true,否则返回false

      ColorConverter.isRgbColor(255);       // 返回 false (索引颜色)
      ColorConverter.isRgbColor(16777216); // 返回 true (黑色 #000000)
      ColorConverter.isRgbColor(16777216 + 16711680); // 返回 true (红色 #FF0000)
    • 从colorIndex中提取RGB值

      Parameters

      • color: number

        包含RGB标记的颜色索引值

      Returns number

      RGB整数值(0x000000 ~ 0xFFFFFF)

      ColorConverter.extractRgbValue(16777216 + 16711680); // 返回 16711680 (#FF0000)
      
    • 从RGB整数值创建colorIndex

      Parameters

      • rgbValue: number

        RGB整数值(0x000000 ~ 0xFFFFFF)

      Returns number

      带RGB标记的colorIndex

      ColorConverter.createRgbColorIndex(16711680); // 返回 16777216 + 16711680 (红色)
      ColorConverter.createRgbColorIndex(0xFF0000); // 同上
    • 从RGB分量创建colorIndex

      Parameters

      • r: number

        红色分量 (0-255)

      • g: number

        绿色分量 (0-255)

      • b: number

        蓝色分量 (0-255)

      Returns number

      带RGB标记的colorIndex

      ColorConverter.createRgbColorIndexFromComponents(255, 0, 0); // 红色
      ColorConverter.createRgbColorIndexFromComponents(0, 255, 0); // 绿色
    • 从十六进制颜色字符串创建colorIndex

      Parameters

      • hexStr: string

        十六进制颜色字符串(如 "#FF0000" 或 "FF0000")

      Returns number

      带RGB标记的colorIndex,如果解析失败返回7(白色索引)

      ColorConverter.createRgbColorIndexFromHexStr("#FF0000"); // 红色
      ColorConverter.createRgbColorIndexFromHexStr("00FF00"); // 绿色
    • 从colorIndex获取RGB分量

      Parameters

      • color: number

        颜色索引值(支持RGB颜色和索引颜色)

      • isDarkBackground: boolean = false

        是否为深色背景

      Returns { r: number; g: number; b: number }

      RGB分量对象 {r, g, b}

      ColorConverter.getRgbComponents(ColorConverter.createRgbColorIndexFromComponents(255, 128, 0));
      // 返回 {r: 255, g: 128, b: 0}
    • 获取颜色的十六进制字符串表示

      将颜色索引转换为6位十六进制字符串格式(不包含#前缀) 支持索引颜色和RGB真彩色

      Parameters

      • color: number

        颜色索引值(0-255为索引颜色,>=16777216为RGB颜色)

      • isDarkBackground: boolean = false

        是否为深色背景,默认为false

      Returns string

      6位十六进制颜色字符串,如"FFFFFF"

      ColorConverter.GetColorHexStr(1); // 返回 "FF0000" (红色索引)
      ColorConverter.GetColorHexStr(7, true); // 返回 "000000" (深色背景下的白色变为黑色)
      ColorConverter.GetColorHexStr(16777216 + 0xFF8000); // 返回 "FF8000" (RGB橙色)
    • 获取颜色的CSS格式字符串表示(带#前缀)

      Parameters

      • color: number

        颜色索引值

      • isDarkBackground: boolean = false

        是否为深色背景

      Returns string

      CSS颜色字符串,如"#FFFFFF"

    • 将十六进制数值转换为CSS颜色字符串

      将RGB十六进制数值转换为标准的CSS颜色字符串格式(包含#前缀)

      Parameters

      • hexValue: number

        RGB十六进制数值

      Returns string

      CSS颜色字符串,如"#FF0000"

      ColorConverter.hexToStr(16711680); // 返回 "#FF0000"
      ColorConverter.hexToStr(65280); // 返回 "#00FF00"
    • 根据颜色索引获取对应的RGB十六进制数值

      这是核心的颜色映射函数,将CAD标准颜色索引转换为RGB十六进制数值。 支持AutoCAD的256色调色板,包括基本颜色、灰度色和扩展颜色。 也支持RGB真彩色(colorIndex >= RGB_MARKER)。

      Parameters

      • color: number

        颜色索引值(0-255为索引颜色,>=16777216为RGB颜色)

      • unusedParameter: number = 0

        未使用的参数,保留为0

      • isDarkBackground: boolean = false

        是否为深色背景,影响某些颜色的显示

      Returns number

      RGB十六进制数值

      特殊颜色处理:

      • 索引0和7:白色(在深色背景下可能变为黑色)
      • 索引1-6:基本颜色(红、黄、绿、青、蓝、洋红)
      • 索引8-255:扩展颜色调色板
      • =16777216:RGB真彩色

      ColorConverter.GetColorHex(1);  // 返回 16711680 (红色 #FF0000)
      ColorConverter.GetColorHex(7); // 返回 16777215 (白色 #FFFFFF)
      ColorConverter.GetColorHex(7, 0, true); // 返回 0 (深色背景下的黑色)
      ColorConverter.GetColorHex(16777216 + 0xFF8000); // 返回 0xFF8000 (RGB橙色)