返回顶部

Easy2d 文档教程之基础类型 下

KeyCode 键值

类定义

包含了所有支持的按键

// 键盘键值
struct KeyCode
{
	enum Value : int
	{
		Unknown = 0,
		Up = VK_UP,
		Left = VK_LEFT,
		Right = VK_RIGHT,
		Down = VK_DOWN,
		Enter = VK_RETURN,
		Space = VK_SPACE,
		Esc = VK_ESCAPE,
		Ctrl = VK_CONTROL,
		Shift = VK_SHIFT,
		Alt = VK_MENU,
		Tab = VK_TAB,
		Delete = VK_DELETE,
		Back = VK_BACK,

		A = 0x41,
		B,
		C,
		D,
		E,
		F,
		G,
		H,
		I,
		J,
		K,
		L,
		M,
		N,
		O,
		P,
		Q,
		R,
		S,
		T,
		U,
		V,
		W,
		X,
		Y,
		Z,

		Num0 = 0x30,
		Num1,
		Num2,
		Num3,
		Num4,
		Num5,
		Num6,
		Num7,
		Num8,
		Num9,

		Numpad0 = VK_NUMPAD0,
		Numpad1,
		Numpad2,
		Numpad3,
		Numpad4,
		Numpad5,
		Numpad6,
		Numpad7,
		Numpad8,
		Numpad9,

		F1 = VK_F1,
		F2,
		F3,
		F4,
		F5,
		F6,
		F7,
		F8,
		F9,
		F10,
		F11,
		F12,
	};
};

支持按键

所有英文字母,
所有数字按键,
F1F12
方向键
EnterSpaceEscCtrlShiftAltTabDeleteBackspace键。

注意:NumpadNum键是不同的,在官方文档中,它们被释义成数字小键盘和数字键

用法

在键名前加上KeyCode::以表示一个按键。
实例:

// 字母 A 键
KeyCode::A
// 字母 Z 键
KeyCode::Z
// 数字 0 键
KeyCode::Num0
// 数字 9 键
KeyCode::Num9
// 数字小键盘 0 键
KeyCode::Numpad0
// 数字小键盘 9 键
KeyCode::Numpad9
// 回车
KeyCode::Enter
// 退出键
KeyCode::Esc
// 上下左右键
KeyCode::Up
KeyCode::Down
KeyCode::Left
KeyCode::Right
// 空格
KeyCode::Space

Input 按键检测

此处建议初学者先跳过,因为涉及Input类。
检测按键是否按下:

Input::isDown(KeyCode::A);

此函数返回一个Bool值,以下代码为实例。

while (1){
	if (Input::isDown(KeyCode::A){
		//按下A
	}else{
		//没按下A
	}
}

MouseCode 鼠标键值

类定义

// 鼠标键值
struct MouseCode
{
	enum Value : int
	{
		Left,		/* 鼠标左键 */
		Right,		/* 鼠标右键 */
		Middle		/* 鼠标中键 */
	};
};

支持按键

MouseCode支持左、中、右鼠标三键,也可以通过Value定义

用法

左、中、右

MouseCode::Left //左
MouseCode::Right //右
MouseCode::Middle //中

Value定义

MouseCode::Value(0);//左
MouseCode::Value(1);//右
MouseCode::Value(2);//中

Input 按键检测

此处建议初学者先跳过,因为涉及Input类。
检测鼠标键 是否按下:

Input::isDown(MouseCode::Middle);

此函数返回一个Bool值,以下代码为实例。

while (1){
	if (Input::isDown(MouseCode::Middle){
		//按下中键
	}else{
		//没按下中键
	}
}

Font 字体

类定义

// 字体
class Font
{
public:
	String	family;			// 字体族
	float	size;			// 字号
	UINT	weight;			// 粗细值
	bool	italic;			// 斜体

public:
	// 字体粗细值
	enum Weight : UINT
	{
		Thin = 100,
		ExtraLight = 200,
		Light = 300,
		Normal = 400,
		Medium = 500,
		Bold = 700,
		ExtraBold = 800,
		Black = 900,
		ExtraBlack = 950
	};

public:
	Font();

	explicit Font(
		const String& family,
		float size = 22,
		UINT weight = Font::Weight::Normal,
		bool italic = false
	);
};

构造新字体

如果你想设置 Text 的字体、粗细、字号等等属性,就需要为它创建一个 Font字体 。

// 创建一个字体,宋体、字号40、粗体、斜体
Font font = Font();
font.family = L"宋体";
font.size = 40;
font.weight = Font::Weight::Bold;
font.italic = true;

第一行代码:创建一个新的Font字体
第二行代码:字体族String,可以是宋体,也可以是楷体。
第三行代码:字号float,填写一个小数,表示字号。
第四行代码:粗细值UNIT,填写一个Weight UNIT
第五行代码:斜体bool,填写truefalse

如果你没有描述一个Font字体的后三个参数,那程序默认会

explicit Font(
		const String& family,//必填
		float size = 22,//默认22
		UINT weight = Font::Weight::Normal,//默认正常
		bool italic = false//默认不启用斜体
	);

以上代码也可以整合为:

// 也可以用下面的代码创建字体,效果和上面一样
Font font = Font(L"宋体", 40, Font::Weight::Bold, true);

字体粗细值 Weight 值

原型

// 字体粗细值
	enum Weight : UINT
	{
		Thin = 100,
		ExtraLight = 200,
		Light = 300,
		Normal = 400,
		Medium = 500,
		Bold = 700,
		ExtraBold = 800,
		Black = 900,
		ExtraBlack = 950
	};

Weight默认为Normal
在标识符前加上Font::Weight::以表示一个字体的粗细值
例子:

Font::Weight::Normal
Font::Weight::Thin

也可以用UNIT类型的数来表示
例子

typedef unsigned int UNIT;
UNIT unit = Font::Weight::Value(100);//等同Font::Weight::Thin

结束语

其实真正的基础类型就这么多,整合上章的内容,ImageListenerFunction我们在这一篇的文档教程中独立讲述,因为其中涉及太多繁杂的内容,对初学者不友好。
希望大家能订阅我的专栏,文档教程我会每周更新4~5篇,多谢大家的鼓励!

posted @ 2021-08-14 09:31  zrc4889  阅读(76)  评论(0编辑  收藏  举报