栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++游戏梦 | EasyX详解 | ③:EasyX函数-颜色模型

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++游戏梦 | EasyX详解 | ③:EasyX函数-颜色模型


<<<上一篇—②:EasyX函数-设备相关

系列文章

①:安装及基本概念
②:EasyX函数-设备相关
③:EasyX函数-颜色模型


文章目录
  • 系列文章
  • 前言
  • 四、EasyX函数 之 颜色模型
    • 交换颜色 - BGR()
    • 合成颜色 - RGB()
    • 分离颜色 - Get*Value()
    • HSL转换 - HSLtoRGB() & RGBtoHSL()
    • HSV转换 - HSVtoRGB() & RGBtoHSV()
    • 获取灰度 - RGBtoGRAY()
  • 结语


前言

作者也是个小白,本【教程】充其量算个学习笔记,若有写的不正确的地方还请指教。

四、EasyX函数 之 颜色模型
  • 交换颜色 - BGR()

    作用:交换颜色中的红色和蓝色。
    注:EasyX中内存中颜色表示为b-g-r,显示缓冲区中是r-g-b,可以输入BGR(0xaabbcc),将红蓝(即变成0xccbbaa)换位。
    函数原型:

    COLORREF BGR(COLORREF color);
    

    参数:

    • c o l o r color color:需要交换的颜色

    返回值:交换后的颜色。

  • 合成颜色 - RGB()

    作用:将红、绿、蓝颜色分量合成颜色。
    函数原型:

    COLORREF RGB(
    	BYTE byRed,		// 颜色的红色部分
    	BYTE byGreen,	// 颜色的绿色部分
    	BYTE byBlue		// 颜色的蓝色部分
    );
    

    参数:

    • b y R e d byRed byRed:颜色的红色部分, ∈ [ 0 , 255 ] in[0,255] ∈[0,255]。
    • b r G r e e n brGreen brGreen:颜色的绿色部分, ∈ [ 0 , 255 ] in[0,255] ∈[0,255]。
    • b y B l u e byBlue byBlue:颜色的蓝色部分, ∈ [ 0 , 255 ] in[0,255] ∈[0,255]。

    返回值:合成的颜色。
    注:可以通过 GetRValue、GetGValue、GetBValue分离出颜色分量。(见下Get*Value())

  • 分离颜色 - Get*Value()

    作用:获取指定颜色中某个颜色值。
    函数原型:

    BYTE GetBValue(COLORREF rgb);//Blue
    BYTE GetGValue(COLORREF rgb);//Green
    BYTE GetRValue(COLORREF rgb);//Red
    

    参数:

    • r g b rgb rgb:指定的颜色。

    返回值:颜色中的r/g/b值, r , g , b ∈ [ 0 , 255 ] r,g,bin[0,255] r,g,b∈[0,255]。

  • HSL转换 - HSLtoRGB() & RGBtoHSL()

    作用:转换 HSL 颜色1和 RGB 颜色。
    函数原型:

    COLORREF HSLtoRGB(
    	float H,
    	float S,
    	float L
    );
    void RGBtoHSL(
    	COLORREF rgb,
    	float *H,
    	float *S,
    	float *L
    );
    

    参数:
    HSLtoRGB():

    • H H H:原 HSL 颜色模型的 Hue(色相) 分量, H ∈ [ 0 , 360 ] Hin[0,360] H∈[0,360]。
    • S S S:原 HSL 颜色模型的 Saturation(饱和度) 分量, S ∈ [ 0 , 1 ] Sin[0,1] S∈[0,1]。
    • L L L:原 HSL 颜色模型的 Lightness(亮度) 分量, L ∈ [ 0 , 1 ] Lin[0,1] L∈[0,1]。

    RGBtoHSL():

    • r g b rgb rgb:原 RGB 颜色。
    • H H H:返回 HSL 颜色模型的 Hue(色相) 分量的地址, H ∈ [ 0 , 360 ] Hin[0,360] H∈[0,360]。
    • S S S:返回 HSL 颜色模型的 Saturation(饱和度) 分量的地址, S ∈ [ 0 , 1 ] Sin[0,1] S∈[0,1]。
    • L L L:用于返回 HSL 颜色模型的 Lightness(亮度) 分量的地址, L ∈ [ 0 , 1 ] Lin[0,1] L∈[0,1]。

    实例:见①-二-颜色-4.

  • HSV转换 - HSVtoRGB() & RGBtoHSV()

    类似HSL:
    HSV2.

    COLORREF HSVtoRGB(
    	float H,//原 HSV 颜色模型的 Hue(色相) 分量,0 <= H < 360。
    	float S,//原 HSV 颜色模型的 Saturation(饱和度) 分量,0 <= S <= 1。
    	float V //原 HSV 颜色模型的 Value(明度) 分量,0 <= V <= 1。
    );
    
    void RGBtoHSV(
    	COLORREF rgb,//原 RGB 颜色。
    	float *H,//用于返回 HSV 颜色模型的 Hue(色相) 分量,0 <= H < 360。
    	float *S,//用于返回 HSV 颜色模型的 Saturation(饱和度) 分量,0 <= S <= 1。
    	float *V//用于返回 HSV 颜色模型的 Value(明度) 分量,0 <= V <= 1。
    );
    

  • 获取灰度 - RGBtoGRAY()

    作用:获取与指定颜色对应的灰度值颜色。
    函数原型:

    COLORREF RGBtoGRAY(
    	COLORREF rgb
    );
    

    参数:

    • r g b rgb rgb:原 RGB 颜色。

    返回值:对应的灰度颜色。


结语

精力、时间有限,先写到这,下期见!





@HaohaoCppDebuger|寻兰 
2021/10/24 

-----THE END-----
THANK YOU !













  1. HSL 又称 HLS。
    HSL 的颜色模型如图所示:H 是英文 Hue 的首字母,表示色相,即组成可见光谱的单色。红色在 0 度,绿色在 120 度,蓝色在 240 度,以此方向过渡。
    S 是英文 Saturation 的首字母,表示饱和度,等于 0 时为灰色。在最大饱和度 1 时,具有最纯的色光。
    L 是英文 Lightness 的首字母,表示亮度,等于 0 时为黑色,等于 0.5 时是色彩最鲜明的状态,等于 1 时为白色。 ↩︎

  2. HSV 又称 HSB。
    HSV 的颜色模型如图所示:
    H 是英文 Hue 的首字母,表示色相,即组成可见光谱的单色。红色在 0 度,绿色在 120 度,蓝色在 240 度,以此方向过渡。
    S 是英文 Saturation 的首字母,表示饱和度,等于 0 时为灰色。在最大饱和度 1 时,每一色相具有最纯的色光。
    V 是英文 Value 的首字母,表示明度,等于 0 时为黑色,在最大明度 1 时,是色彩最鲜明的状态。 ↩︎

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/346912.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号