QColor

QColor

QColor() QColor(Qt::GlobalColor color) QColor(int r, int g, int b, int a = ...) QColor(QRgb color) QColor(QRgba64 rgba64) QColor(const QString &name) QColor(QStringView name) QColor(const char *name) QColor(QLatin1String name) QColor(const QColor &color) QColor(QColor &&other) int    alpha() const qreal    alphaF() const int    black() const qreal    blackF() const int    blue() const qreal    blueF() const QColor    convertTo(QColor::Spec colorSpec) const int    cyan() const qreal    cyanF() const QColor    darker(int factor = 200) const void    getCmyk(int *c, int *m, int *y, int *k, int *a = nullptr) void    getCmykF(qreal *c, qreal *m, qreal *y, qreal *k, qreal *a = nullptr) void    getHsl(int *h, int *s, int *l, int *a = nullptr) const void    getHslF(qreal *h, qreal *s, qreal *l, qreal *a = nullptr) const void    getHsv(int *h, int *s, int *v, int *a = nullptr) const void    getHsvF(qreal *h, qreal *s, qreal *v, qreal *a = nullptr) const void    getRgb(int *r, int *g, int *b, int *a = nullptr) const void    getRgbF(qreal *r, qreal *g, qreal *b, qreal *a = nullptr) const int    green() const qreal    greenF() const int    hslHue() const qreal    hslHueF() const int    hslSaturation() const qreal    hslSaturationF() const int    hsvHue() const qreal    hsvHueF() const int    hsvSaturation() const qreal    hsvSaturationF() const int    hue() const qreal    hueF() const bool    isValid() const QColor    lighter(int factor = 150) const int    lightness() const qreal    lightnessF() const int    magenta() const qreal    magentaF() const QString    name() const QString    name(QColor::NameFormat format) const int    red() const qreal    redF() const QRgb    rgb() const QRgba64    rgba64() const QRgb    rgba() const int    saturation() const qreal    saturationF() const void    setAlpha(int alpha) void    setAlphaF(qreal alpha) void    setBlue(int blue) void    setBlueF(qreal blue) void    setCmyk(int c, int m, int y, int k, int a = 255) void    setCmykF(qreal c, qreal m, qreal y, qreal k, qreal a = 1.0) void    setGreen(int green) void    setGreenF(qreal green) void    setHsl(int h, int s, int l, int a = 255) void    setHslF(qreal h, qreal s, qreal l, qreal a = 1.0) void    setHsv(int h, int s, int v, int a = 255) void    setHsvF(qreal h, qreal s, qreal v, qreal a = 1.0) void    setNamedColor(const QString &name) void    setNamedColor(QStringView name) void    setNamedColor(QLatin1String name) void    setRed(int red) void    setRedF(qreal red) void    setRgb(int r, int g, int b, int a = 255) void    setRgb(QRgb rgb) void    setRgba64(QRgba64 rgba) void    setRgbF(qreal r, qreal g, qreal b, qreal a = 1.0) void    setRgba(QRgb rgba) QColor::Spec    spec() const QColor    toCmyk() const QColor    toHsl() const QColor    toHsv() const QColor    toRgb() const int    value() const qreal    valueF() const int    yellow() const qreal    yellowF() const QVariant    operator QVariant() const bool    operator!=(const QColor &color) const QColor &    operator=(QColor &&other) QColor &    operator=(const QColor &color) QColor &    operator=(Qt::GlobalColor color) bool    operator==(const QColor &color) const

 

 

QColor类提供基于RGB、HSV或CMYK值的颜色。

颜色通常根据RGB(红色、绿色和蓝色)分量指定,但也可以根据HSV(色调、饱和度和值)和CMYK(青色、洋红、黄色和黑色)分量指定。此外,可以使用颜色名称指定颜色。颜色名称可以是SVG 1.0的任何颜色名称。

 

 

 

 

 

QColor构造函数基于RGB值创建颜色。要基于HSV或CMYK值创建QColor,请分别使用toHsv()和toCmyk()函数。这些函数使用所需的格式返回颜色的副本。此外,静态fromRgb()、fromHsv()和fromCmyk()函数会根据指定的值创建颜色。或者,可以使用convertTo()函数(返回所需格式的颜色副本)将颜色转换为三种格式中的任何一种,或者使用setRgb()、setHsv()和setCmyk()函数中的任何一种来更改该颜色的格式。函数的作用是:说明颜色是如何指定的。

 

可以通过将RGB字符串(如“#112233”)或ARGB字符串(如“#ff112233”)或颜色名称(如“蓝色”)传递给setNamedColor()函数来设置颜色。颜色名称取自SVG 1.0颜色名称。函数的作用是:返回颜色的名称,格式为“#RRGGBB”。也可以使用setRgb()、setHsv()和setCmyk()设置颜色。要获得较浅或较深的颜色,请分别使用lighter()和darker()函数。

 

isValid()函数指示QColor是否合法。例如,RGB值超出范围的RGB颜色是非法的。出于性能方面的原因,QColor主要忽略非法颜色,因此,使用无效颜色的结果是未定义的。

 

颜色成分可以单独检索,例如红色()、色调()和青色()。还可以使用getRgb()、getHsv()和getCmyk()函数一次性检索颜色组件的值。使用RGB颜色模型,还可以使用RGB()访问颜色组件。

 

有几个相关的非成员:QRgb是表示RGB值三元组(r、g、b)的无符号int的typdef。请注意,它还可以保存alpha通道的值(有关更多信息,请参阅alpha混合图形部分)。qRed()、qBlue()和qGreen()函数返回给定QRgb值的相应分量,而QRgb()和qRgba()函数根据给定分量值创建并返回QRgb三元组。最后,qAlpha()函数返回所提供的QRgb的alpha分量,qGray()函数根据给定值计算并返回灰度值。

 

QColor与平台和设备无关。QColormap类将颜色映射到硬件。

 

有关一般绘画的更多信息,请参阅绘画系统文档。

 

整数与浮点精度

QColor支持浮点精度,并提供所有颜色组件函数的浮点版本,例如getRgbF()、hueF()和fromCmykF()。请注意,由于组件是使用16位整数存储的,因此使用setRgbF()设置的值与使用getRgbF()函数返回的值之间可能会由于舍入而存在微小偏差。

 

基于整数的函数取值范围为0-255(hue()除外,其值必须在0-359范围内),而浮点函数则取值范围为0.0-1.0。

 

阿尔法混合绘图

QColor还支持alpha混合轮廓和填充。颜色的alpha通道指定透明度效果,0表示完全透明的颜色,255表示完全不透明的颜色。例如:

 

// Specify semi-transparent red   painter.setBrush(QColor(255, 0, 0, 127));   painter.drawRect(0, 0, width()/2, height());    // Specify semi-transparent blue   painter.setBrush(QColor(0, 0, 255, 127));   painter.drawRect(0, 0, width(), height()/2);

 

上面的代码生成以下输出:

 

 

 

 

如果颜色的值是整数,则可以使用alpha()和setAlpha()函数检索和设置颜色的alpha通道;如果颜色的值是qreal(double),则可以使用alphaF()和setAlphaF()函数检索和设置颜色的alpha通道。默认情况下,alpha通道设置为255(不透明)。要一次性检索和设置所有RGB颜色组件(包括alpha通道),请使用rgba()和setRgba()函数。

 

预定义的颜色

Qt::GlobalColor枚举描述了20种预定义的QColor,包括黑色、白色、原色和副色、这些颜色的较深版本和三种灰色。QColor还可以识别各种颜色名称;函数的作用是:返回QColor知道的QStringList颜色名称。

 

 

 

此外,Qt::color0、Qt::color1和Qt::transparent颜色用于特殊用途。

 

Qt::color0(零像素值)和Qt::color1(非零像素值)是用于在QBitmap中绘制的特殊颜色。使用Qt::color0绘制将位图位设置为0(透明,即背景),使用Qt::color1绘制将位图位设置为1(不透明,即前景)。

 

透明用于表示透明像素。使用此值绘制时,将使用适用于正在使用的基本像素格式的像素值。

 

HSV颜色模型

RGB模型是面向硬件的。它的表现接近大多数显示器所显示的。相比之下,HSV代表颜色的方式更适合人类对颜色的感知。例如,“比强”、“比暗”和“与之相反”的关系在HSV中很容易表达,但在RGB中更难表达。

 

HSV和RGB一样,有三个组成部分:

 

H、 对于色调,如果颜色为彩色(非灰色),则在0到359之间;如果颜色为灰色,则在0到359之间。它代表大多数人熟悉的色轮上的度。红色是0度,绿色是120度,蓝色是240度

 

 

 

 

S、 对于饱和度,它在0到255的范围内,它越大,颜色越浓。灰色的饱和度接近0;非常强的颜色的饱和度接近255。

 

 

 

 

V、 值的范围为0到255,表示颜色的亮度或亮度。0是黑色的;255是尽可能远离黑色的

 

 

这里有一些例子:纯红色是H=0,S=255,V=255;暗红色稍微向洋红色移动,可能是H=350(相当于-10),S=255,V=180;浅灰红色的H约为0(比如350-359或0-10),S约为50-100,S=255。

 

Qt返回非彩色的色调值-1。如果传递的色调值太大,Qt将强制其进入范围。色调360或720被视为0;色调540被视为180。

 

除了标准HSV模型外,Qt还提供了一个alpha通道,以显示alpha混合图形。

 

HSL颜色模型

HSL与HSV类似,但HSL指定的是亮度参数,而不是值参数。

 

CMYK颜色模型

RGB和HSV彩色模型用于在计算机显示器上显示,CMYK模型用于印刷机和一些硬拷贝设备的四色打印过程。

 

CMYK有四种成分,都在0-255范围内:青色(C)、品红(M)、黄色(Y)和黑色(K)。青色、品红色和黄色被称为减色;CMYK颜色模型通过从白色表面开始创建颜色,然后通过应用适当的组件减去颜色。当结合青色、洋红和黄色得到黑色时,减去一种或多种颜色将得到任何其他颜色。当以不同的百分比组合时,这三种颜色可以创建整个颜色光谱。

 

混合100%的青色、品红和黄色确实会产生黑色,但结果并不令人满意,因为这会浪费墨水,增加干燥时间,并且在打印时会产生浑浊的颜色。因此,在专业印刷中添加黑色,以提供纯黑色调;因此被称为“四色工艺”。

 

除了标准的CMYK模型外,Qt还提供了一个alpha通道来显示alpha混合图形。

 

 

 

 

 

 

#################