Easyx基本使用(二)

14 篇文章 0 订阅
6 篇文章 5 订阅

Easyx基本使用(二)

——三大概念

一、颜色

1. 使用预定常量

常用颜色

常量			   值		  颜色
--------		--------	--------
YELLOW			0x55FFFF	黄
WHITE			0xFFFFFF	白
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	亮紫

2. 使用16进制数字

**16 进制的颜色表示规则为:0xbbggrr (bb=蓝,gg=绿,rr=红)**
如:
- 0x00ff00 绿
- 0xff0000 蓝
- 0xffffff 黑
- 0x000000 白

3. 使用RGB合成颜色

原型

COLORREF RGB(
	BYTE byRed,		// 颜色的红色部分
	BYTE byGreen,	// 颜色的绿色部分
	BYTE byBlue		// 颜色的蓝色部分
);
  • byRed:红色部分,范围:0~255

  • byGreen:绿色部分,范围:2~255

  • byBlue:蓝色部分,范围:0~255

  • 返回值:合成的颜色

GetRValue

BYTE GetRValue(COLORREF rgb);
  • rgb:指定的颜色
  • 返回值:指定颜色中的红色值,范围:0~255

GetGValue

BYTE GetGValue(COLORREF rgb);
  • rgb:指定的颜色
  • 返回值:指定颜色中的绿色值,范围:0~255

GetBValue

BYTE GetBValue(COLORREF rgb);
  • rgb:指定的颜色
  • 返回值:指定颜色中的蓝色值,范围:0~255

4. 使用 HSLtoRGBHSVtoRGB 转换其他色彩模型到 RGB 颜色

4.1 HSLtoRGB 转换 HSL 颜色为 RGB 颜色

原型

COLORREF HSLtoRGB(
	float H,
	float S,
	float L
);
  • H:原HSL颜色模型的Hue(色相)分量,0 <= H < 360
  • S:原HSL颜色模型的Saturation(饱和度) 分量,0 <= S <= 1
  • L:原HSL颜色模型的Lightness(亮度) 分量,0 <= L <= 1
  • 返回值:对应的RGB颜色

备注

HSL 又称 HLS。

HSL 的颜色模型如图所示:

img

H 是英文 Hue 的首字母,表示色相,即组成可见光谱的单色。红色在 0 度,绿色在 120 度,蓝色在 240 度,以此方向过渡。

S 是英文 Saturation 的首字母,表示饱和度,等于 0 时为灰色。在最大饱和度 1 时,具有最纯的色光。

L 是英文 Lightness 的首字母,表示亮度,等于 0 时为黑色,等于 0.5 时是色彩最鲜明的状态,等于 1 时为白色。

4.2 HSVtoRGB 用于转换 HSV 颜色为 RGB 颜色

原型

COLORREF HSVtoRGB(
	float H,
	float S,
	float V
);
  • H:原 HSV 颜色模型的 Hue(色相) 分量,0 <= H < 360
  • S:原 HSV 颜色模型的 Saturation(饱和度) 分量,0 <= S <= 1
  • V:原 HSV 颜色模型的 Value(明度) 分量,0 <= V <= 1
  • 返回值:对应的RGB颜色

备注

HSV 又称 HSB。

HSV 的颜色模型如图所示:

img

H 是英文 Hue 的首字母,表示色相,即组成可见光谱的单色。红色在 0 度,绿色在 120 度,蓝色在 240 度,以此方向过渡。

S 是英文 Saturation 的首字母,表示饱和度,等于 0 时为灰色。在最大饱和度 1 时,每一色相具有最纯的色光。

V 是英文 Value 的首字母,表示明度,等于 0 时为黑色,在最大明度 1 时,是色彩最鲜明的状态。

5. 示例

setlinecolor(0xff0000);
setlinecolor(BLUE);
setlinecolor(RGB(0, 0, 255));
setlinecolor(HSLtoRGB(240, 1, 0.5));

在这里插入图片描述

#include<easyx.h>	// easyx图形界面库头文件
#include<conio.h>	// getch函数所在的头文件

int main(void) {
	// 1. 初始化图形界面
	initgraph(400, 400);
	// 2. to do...(自己要干的事)
	setlinecolor(YELLOW);	// 设置线的颜色为黄色
	circle(100, 100, 50);
	setlinecolor(0xff0000);	// 设置线的颜色为蓝色
	circle(100, 200, 50);
	setlinecolor(RGB(100, 0, 0));
	circle(200, 100, 50);
	setlinecolor(HSLtoRGB(100, 0.2, 0.2));
	circle(200, 200, 50);
	getch();
	// 3. 关闭图形界面,释放资源
	closegraph();
	return 0;
}

二、坐标

在这里插入图片描述

1. 物理坐标

物理坐标是描述设备的坐标体系。

坐标原点在设备的左上角,X 轴向右为正,Y 轴向下为正,度量单位是像素。

坐标原点、坐标轴方向、缩放比例都不能改变。

2. 逻辑坐标

逻辑坐标是在程序中用于绘图的坐标体系。

坐标默认的原点在窗口的左上角,X 轴向右为正,Y 轴向下为正,度量单位是点。

默认情况下,逻辑坐标与物理坐标是一一对应的,一个逻辑点等于一个物理像素。

在本手册中,凡是没有注明的坐标,均指逻辑坐标。

三、设备

  • 含义:绘图的对象(图像绘制到哪里)
  • Easyx中设备分两种,一种是默认的绘图窗口,另一种是 IMAGE 对象

1. 默认绘图窗口

使用initgraph初始化的窗口就是默认绘图窗口,如果不进行指定那么所有的绘图都将绘制到该窗口

2. IMAGE对象

Easyx中内置的数据结构,用来保存图片数据以及使用其作为绘图设备绘制图像等

3. 更改方法

SetWorkingImage:这个函数用于设定当前的绘图设备。

void SetWorkingImage(IMAGE* pImg = NULL);
  • pImg:绘图设备指针,如果为NULL表示为默认绘图设备

  • 返回值:无

  • 如果需要对某个 IMAGE 做绘图操作,可以通过该函数将其设置为当前的绘图设备,之后所有的绘图语句都会绘制在该 IMAGE 上面。将参数置为 NULL 可恢复对默认绘图窗口的绘图操作。

4. 示例

#include <graphics.h>
#include <conio.h>

int main(void) {
	// 初始化绘图窗口
	initgraph(640, 480);

	// 创建 200x200 的 img 对象
	IMAGE img(200, 200);
	
	// 设置绘图目标为 img 对象
	SetWorkingImage(&img);
	// 以下绘图操作都会绘制在 img 对象上面
	line(0, 100, 200, 100);
	line(100, 0, 100, 200);
	circle(100, 100, 50);

	// 设置绘图目标为绘图窗口
	SetWorkingImage();
	// 将 img 对象显示在绘图窗口中
	putimage(220, 140, &img);

	// 按任意键退出
	_getch();
	closegraph();
}
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值