颜色 是 Magick++ 中的基本颜色类。它是一个简单的容器类,用于存储按 ImageMagick 的 Quantum 大小缩放后的像素红色、绿色、蓝色和 alpha 值。通常,用户会实例化从 Color 派生的类,该类支持适合应用程序需求的颜色模型。Color 类可以直接从 SVG 风格的颜色字符串构造。
QuantumDepth 值的影响
|
QuantumDepth |
Quantum 类型定义 |
Quantum 大小 |
|
8 |
无符号字符 |
32 位 |
|
16 |
无符号短整型 |
64 位 |
|
32 |
无符号整型 |
128 位 |
Color 基类不打算直接使用。通常,用户会构造派生类或从该类继承。颜色参数必须缩放以适合 Quantum 大小。Color 类包含指向 Quantum 的指针,该指针可以由 Color 类分配,也可以引用图像中现有的像素。
构造该类的另一种方法是通过 SVG 兼容的颜色规范字符串(例如 Color("red") 或 Color ("#FF0000"))。由于该类可以从字符串构造,因此在接受对 Color 的引用的方法中,可以方便地传递字符串以代替显式 Color 对象。Color 也可以转换为 std::string,以便在用户界面中方便使用,以及将设置保存到文本文件。
Color 派生类
|
RGB 颜色的表示,红色、绿色和蓝色指定为比率 (0 到 1) | |
|
表示 灰度 sRGB 颜色 (红色、绿色和蓝色的等量) 指定为比率 (0 到 1) | |
|
表示黑/白颜色 (真/假) | |
|
表示 YUV 颜色空间 中的颜色 |
表示 sRGB 颜色。所有颜色参数的有效范围为 0.0-1.0。
class ColorRGB : public Color
{
public:
ColorRGB ( double red_, double green_, double blue_ );
ColorRGB ( void );
ColorRGB ( const Color & color_ );
/* virtual */ ~ColorRGB ( void );
void red ( double red_ );
double red ( void ) const;
void green ( double green_ );
double green ( void ) const;
void blue ( double blue_ );
double blue ( void ) const;
// Assignment operator from base class
ColorRGB& operator= ( const Color& color_ );
};
表示灰度颜色 (在线性颜色空间中)。灰度 只是 RGB,红色、绿色和蓝色的比例相等。所有双精度参数的有效范围为 0.0-1.0。
class ColorGray : public Color
{
public:
ColorGray ( double shade_ );
ColorGray ( void );
ColorGray ( const Color & color_ );
/* virtual */ ~ColorGray ();
void shade ( double shade_ );
double shade ( void ) const;
// Assignment operator from base class
ColorGray& operator= ( const Color& color_ );
};
表示黑/白像素 (在 RGB 颜色空间中)。颜色参数限制为“false” (黑色像素) 和“true” (白色像素)。
class ColorMono : public Color
{
public:
ColorMono ( bool mono_ );
ColorMono ( void );
ColorMono ( const Color & color_ );
/* virtual */ ~ColorMono ();
void mono ( bool mono_ );
bool mono ( void ) const;
// Assignment operator from base class
ColorMono& operator= ( const Color& color_ );
};
表示色调/饱和度/亮度 (HSL) 颜色空间中的颜色。
class ColorHSL : public Color
{
public:
ColorHSL ( double hue_, double saturation_, double luminosity_ );
ColorHSL ( void );
ColorHSL ( const Color & color_ );
/* virtual */ ~ColorHSL ( );
void hue ( double hue_ );
double hue ( void ) const;
void saturation ( double saturation_ );
double saturation ( void ) const;
void luminosity ( double luminosity_ );
double luminosity ( void ) const;
// Assignment operator from base class
ColorHSL& operator= ( const Color& color_ );
};
表示 YUV 颜色空间中的颜色 (用于对电视传输进行颜色编码)。
参数范围
class ColorYUV : public Color
{
public:
ColorYUV ( double y_, double u_, double v_ );
ColorYUV ( void );
ColorYUV ( const Color & color_ );
/* virtual */ ~ColorYUV ( void );
void u ( double u_ );
double u ( void ) const;
void v ( double v_ );
double v ( void ) const;
void y ( double y_ );
double y ( void ) const;
// Assignment operator from base class
ColorYUV& operator= ( const Color& color_ );
};