graphics.h图形库:基本概念(1)——颜色

文章目录

  • 1.用预定义常量表示颜色
  • 2.用 16 进制数字表示颜色
  • 3. 用 RGB 宏合成颜色
  • 4.用 HSLtoRGB、HSVtoRGB 转换其他色彩模型到 RGB 颜色
    • 4.1 HSLtoRGB
  • 4.2 HSVtoRGB

今天来讲下表示颜色的方法

1.用预定义常量表示颜色

常量 颜色
BLACK 0
BLUE 0xAA0000
GREEN 0x00AA00 绿
CYAN 0xAAAA00
RED 0x0000AA
MAGENTA 0xAA00AA
BROWN 0x0055AA
LIGHTGRAY 0xAAAAAA 浅灰
DARKGRAY 0x555555 深灰
LIGHTBLUE 0xFF5555 亮蓝
LIGHTGREEN 0x55FF55 亮绿
LIGHTCYAN 0xFFFF55 亮青
LIGHTRED 0x5555FF 亮红
LIGHTMAGENTA 0xFF55FF 亮紫
YELLOW 0x55FFFF
WHITE 0xFFFFFF

2.用 16 进制数字表示颜色

16 进制的颜色表示规则为:0xbbggrr (bb=蓝,gg=绿,rr=红)

3. 用 RGB 宏合成颜色

格式:

RGB(red,green,blue)

4.用 HSLtoRGB、HSVtoRGB 转换其他色彩模型到 RGB 颜色

4.1 HSLtoRGB

HSLtoRGB是一个函数,用于将HSL(色相、饱和度、亮度)颜色值转换为RGB(红、绿、蓝)颜色值。它是graphics.h库中的一个函数,用于图形界面编程。

该函数的定义如下:

void HSLtoRGB(double h, double s, double l, int& r, int& g, int& b);

参数h、s和l分别表示颜色的色相、饱和度和亮度,取值范围为0到1。r、g和b是输出参数,分别表示转换后的RGB颜色值,取值范围为0到255。

使用该函数的示例代码如下:

#include 
#include 

int main()
{
    initgraph(640, 480);
    setbkcolor(WHITE);
    
    // 将HSL值(0.5, 1.0, 0.5)转换为RGB值
    int r, g, b;
    HSLtoRGB(0.5, 1.0, 0.5, r, g, b);
    
    // 在屏幕上显示转换后的RGB颜色
    setcolor(RGB(r, g, b));
    outtextxy(100, 100, "Hello, world!");
    
    getch();
    closegraph();
    return 0;
}

在上面的示例中,程序将HSL颜色值(0.5,1.0,0.5)转换为RGB颜色值,并在屏幕上显示了一个带有转换后RGB颜色的“Hello, world!”文本。

4.2 HSVtoRGB

HSVtoRGB是一个函数,用于将HSV(色相、饱和度、亮度)颜色模型转换为RGB(红绿蓝)颜色模型。在graphics.h库中,它被用于绘制彩色图形。

函数原型如下:

void HSVtoRGB(float h, float s, float v,float &r, float &g, float &b);

其中h、s、v分别代表色相、饱和度和亮度(取值范围每个参数都是0-1之间的浮点数),r、g、b分别代表红、绿、蓝分量(也是0-1之间的浮点数)。该函数会根据输入的HSV参数计算出相应的RGB值,并通过引用返回。

下面是一个简单的例子,展示了如何使用HSVtoRGB函数绘制彩色图形:

#include 
#include 
using namespace std;

int main()
{
    int gd = DETECT, gm;
    initgraph(&gd, &gm, "");

    for(int i=0;i<360;i+=5) {
        float r,g,b;
        HSVtoRGB(i/360.0,1,1,r,g,b);
        setcolor(COLOR(r*255,g*255,b*255));
        circle(200,200,100);
    }

    getch();
    closegraph();
    return 0;
}

该程序将在屏幕上绘制一个由彩色圆组成的圆环。可以看出,它用了一个循环来遍历所有可能的色相值(0-360),然后调用HSVtoRGB函数计算每个色相值对应的RGB值,再使用setcolor函数将结果应用于圆的颜色。

你可能感兴趣的:(graphics.h图形库,C++,C++图形开发,c++,开发语言)