DEV-C++ ege.h库 绘图教程(六)

一、前情回顾

DEV-C++ ege.h库 绘图教程(一)

DEV-C++ ege.h库 绘图教程(二)

DEV-C++ ege.h库 绘图教程(三)

DEV-C++ ege.h库 绘图教程(四)

DEV-C++ ege.h库 绘图教程(五)

那么今天,我们来讲一个比较简单的东西——音乐。

二、音乐函数

1.MUSIC类

首先看一看类声明。

class MUSIC
{
public:
	MUSIC();
	virtual ~MUSIC();
	operator HWND()const{ return (HWND)m_dwCallBack; }
public:
	int   IsOpen() { return (m_DID != MUSIC_ERROR) ? 1 : 0; }
	DWORD OpenFile(LPCSTR  filepath);
	DWORD OpenFile(LPCWSTR filepath);
	DWORD Play(DWORD dwFrom = MUSIC_ERROR, DWORD dwTo = MUSIC_ERROR);
	DWORD Pause();
	DWORD Seek(DWORD dwTo); //播放位置定位,单位为ms
	DWORD SetVolume(float value);
	DWORD Close();
	DWORD Stop();
	DWORD GetPosition();
	DWORD GetLength();
	// 以下函数GetPlayStatus的返回值为以下之一(意义看后缀):
	// MUSIC_MODE_NOT_OPEN   //没有正确打开
	// MUSIC_MODE_NOT_READY  //设备没准备好 (较少使用)
	// MUSIC_MODE_PAUSE  //暂停中
	// MUSIC_MODE_PLAY   //正在播放
	// MUSIC_MODE_STOP   //成功打开后,或者播放完是这个状态
	// MUSIC_MODE_OPEN   //打开中 (较少使用)
	// MUSIC_MODE_SEEK   //定位中 (较少使用)
	DWORD GetPlayStatus();
private:
	DWORD       m_DID;
	PVOID       m_dwCallBack;
};

MUSIC类就是EGE播放音乐的核心。(当然你也可以直接用Windows的mciSendString)

首先我们

MUSIC mus;

就建立了一个MUSIC变量,可以用来播放音乐了。

2.IsOpen

这个函数返回是否已经打开(注意不是播放)音乐,或者你也可以用

GetPlayStatus()==MUSIC_MODE_STOP

来判断是否已经打开音乐。

3.OpenFile

打开一个音乐文件,注意,只能打开mp3文件!!!

MUSIC mus;
mus.OpenFile("C:\TEST.mp3");        //绝对路径
mus.OpenFile("TEST.mp3");           //相对路径

4.Play

播放音乐,没有什么需要讲的。

MUSIC mus;
mus.OpenFile("C:\TEST.mp3");        //绝对路径
mus.OpenFile("TEST.mp3");           //相对路径
mus.Play();
getch();                            //防止程序一播音乐就结束

5.Pause

暂停音乐,需要继续播放的话用Play函数。

6.Stop

停止播放音乐。

Pause:再次播放时可以从暂停的地方开始。

Stop:再次播放时从头开始。

(废话)

7.Seek

定位,例如

mus.Seek(1006);

可以从音乐的1.006秒开始播放。(单位是毫秒)

8.SetVolume

设置音量,1为最大声,取值范围[0,1]。

因为是float所以可以使用

mus.SetVolume(0.45);

(也是废话)

9.Close

关闭音乐

Stop:停止后可以使用Play再次播放。

Close:已经关闭了音乐文件,需要再次OpenFiile才能播放。

10.GetPlayStatus

获取播放状态,返回值上面的注释里头都写了。

	// 以下函数GetPlayStatus的返回值为以下之一(意义看后缀):
	// MUSIC_MODE_NOT_OPEN   //没有正确打开
	// MUSIC_MODE_NOT_READY  //设备没准备好 (较少使用)
	// MUSIC_MODE_PAUSE  //暂停中
	// MUSIC_MODE_PLAY   //正在播放
	// MUSIC_MODE_STOP   //成功打开后,或者播放完是这个状态
	// MUSIC_MODE_OPEN   //打开中 (较少使用)
	// MUSIC_MODE_SEEK   //定位中 (较少使用)
	DWORD GetPlayStatus();
enum music_state_flag {
	MUSIC_MODE_NOT_OPEN = 0x0,
	MUSIC_MODE_NOT_READY = 0x20C,
	MUSIC_MODE_PAUSE = 0x211,
	MUSIC_MODE_PLAY = 0x20E,
	MUSIC_MODE_STOP = 0x20D,
	MUSIC_MODE_OPEN = 0x212,
	MUSIC_MODE_SEEK = 0x210,
};

也就是说

if(mus.GetPlayStatus()==MUSIC_MODE_PLAY) mus.Stop();

可以在音乐播放时把它停止。

比较方便。

三、文字函数

不过讲完了音乐函数发现这篇文章才写了一点点,所以为了凑字数,我再来给大家讲一讲文字函数。

1.getfont

获取当前的字体样式,他的返回值是LOGFONT结构体,我们等下就说。

void EGEAPI getfont(LOGFONTA *font, PCIMAGE pimg = NULL);      // 获取当前字体样式
void EGEAPI getfont(LOGFONTW *font, PCIMAGE pimg = NULL);      // 获取当前字体样式

2.LOGFONT结构体

用来保存字体样式。比较复杂,就直接上官方解释了。

功能:

这个结构体定义了字体的属性。
struct LOGFONT {
    LONG lfHeight;
    LONG lfWidth 
    LONG lfEscapement;
    LONG lfOrientation;
    LONG lfWeight;
    BYTE lfItalic;
    BYTE lfUnderline;
    BYTE lfStrikeOut;
    BYTE lfCharSet;
    BYTE lfOutPrecision;
    BYTE lfClipPrecision;
    BYTE lfQuality;
    BYTE lfPitchAndFamily;
    TCHAR lfFaceName[LF_FACESIZE];
};

成员 lfHeight 指定高度(逻辑单位)。 如果为正,表示指定的高度是字体的完整高度;如果为负,表示指定的高度不包含tmInternalLeading的高度。也就是说相同绝对值下,负的比正的会稍高一些;而实际输出的字体高度,正数时精确匹配,负数时,和实际略有偏差,绝对值比实际的略小。 lfWidth 指定字符的平均宽度(逻辑单位)。如果为 0,则比例自适应。 lfEscapement 字符串的书写角度,单位 0.1 度,默认为 0。 lfOrientation 每个字符的书写角度,单位 0.1 度,默认为 0。 lfWeight 字符的笔画粗细,范围 0~1000,0 表示默认粗细,使用数字或下表中定义的宏均可。
粗细值
FW_DONTCARE 0
FW_THIN 100
FW_EXTRALIGHT 200
FW_ULTRALIGHT 200
FW_LIGHT 300
FW_NORMAL 400
FW_REGULAR 400
FW_MEDIUM 500
FW_SEMIBOLD 600
FW_DEMIBOLD 600
FW_BOLD 700
FW_EXTRABOLD 800
FW_ULTRABOLD 800
FW_HEAVY 900
FW_BLACK 900
lfItalic 指定字体是否是斜体。 lfUnderline 指定字体是否有下划线。 lfStrikeOut 指定字体是否有删除线。 lfCharSet 指定字符集。以下是预定义的值: ANSI_CHARSET BALTIC_CHARSET CHINESEBIG5_CHARSET DEFAULT_CHARSET EASTEUROPE_CHARSET GB2312_CHARSET GREEK_CHARSET HANGUL_CHARSET MAC_CHARSET OEM_CHARSET RUSSIAN_CHARSET SHIFTJIS_CHARSET SYMBOL_CHARSET TURKISH_CHARSET 其中,OEM_CHARSET 表示字符集依赖本地操作系统。 DEFAULT_CHARSET 表示字符集基于本地操作系统。例如,系统位置是 English (United States),字符集将设置为 ANSI_CHARSET。 lfOutPrecision 指定文字的输出精度。输出精度定义输出与所请求的字体高度、宽度、字符方向、行距、间距和字体类型相匹配必须达到的匹配程度。可以是以下值:
含义
OUT_DEFAULT_PRECIS 指定默认的映射行为。
OUT_DEVICE_PRECIS 当系统包含多个名称相同的字体时,指定设备字体。
OUT_OUTLINE_PRECIS 指定字体映射选择 TrueType 和其它的 outline-based 字体。
OUT_RASTER_PRECIS 当系统包含多个名称相同的字体时,指定光栅字体(即点阵字体)。
OUT_STRING_PRECIS 这个值并不能用于指定字体映射,只是指定点阵字体枚举数据。
OUT_STROKE_PRECIS 这个值并不能用于指定字体映射,只是指定 TrueType 和其他的 outline-based 字体,以及矢量字体的枚举数据。
OUT_TT_ONLY_PRECIS 指定字体映射只选择 TrueType 字体。如果系统中没有安装 TrueType 字体,将选择默认操作。
OUT_TT_PRECIS 当系统包含多个名称相同的字体时,指定 TrueType 字体。
lfClipPrecision 指定文字的剪辑精度。剪辑精度定义如何剪辑字符的一部分位于剪辑区域之外的字符。可以是以下值:
含义
CLIP_DEFAULT_PRECIS 指定默认的剪辑行为。
CLIP_STROKE_PRECIS 这个值并不能用于指定字体映射,只是指定光栅(即点阵)、矢量或 TrueType 字体的枚举数据。
CLIP_EMBEDDED 当使用内嵌的只读字体时,必须指定这个标志。
CLIP_LH_ANGLES 如果指定了该值,所有字体的旋转都依赖于坐标系统的方向是逆时针或顺时针。如果没有指定该值,设备字体始终逆时针旋转,但是其它字体的旋转依赖于坐标系统的方向。该设置影响 lfOrientation 参数的效果。
lfQuality 指定文字的输出质量。输出质量定义图形设备界面 (GDI) 必须尝试将逻辑字体属性与实际物理字体的字体属性进行匹配的仔细程度。可以是以下值:
含义
ANTIALIASED_QUALITY 指定输出质量是抗锯齿的(如果字体支持)。
DEFAULT_QUALITY 指定输出质量不重要。
DRAFT_QUALITY 草稿质量。字体的显示质量是不重要的。对于光栅字体(即点阵字体),缩放是有效的,这就意味着可以使用更多的尺寸,但是显示质量并不高。如果需要,粗体、斜体、下划线和删除线字体会被合成。
NONANTIALIASED_QUALITY 指定输出质量不是抗锯齿的。
PROOF_QUALITY 正稿质量。指定字体质量比匹配字体属性更重要。对于光栅字体(即点阵字体),缩放是无效的,会选用其最接近的字体大小。虽然选中 PROOF_QUALITY 时字体大小不能精确地映射,但是输出质量很高,并且不会有畸变现象。如果需要,粗体、斜体、下划线和删除线字体会被合成。
如果 ANTIALIASED_QUALITY 和 NONANTIALIASED_QUALITY 都未被选择,抗锯齿效果将依赖于控制面板中字体抗锯齿的设置。 lfPitchAndFamily 指定以常规方式描述字体的字体系列。字体系列描述大致的字体外观。字体系列用于在所需精确字体不可用时指定字体。 1~2 位指定字体间距,可以是以下值:
含义
DEFAULT_PITCH 指定默认间距。
FIXED_PITCH 指定固定间距。
VARIABLE_PITCH 指定可变间距。
4~7 位指定字体系列,可以是以下值:
含义
FF_DECORATIVE 指定特殊字体。例如 Old English。
FF_DONTCARE 指定字体系列不重要。
FF_MODERN 指定具有或不具有衬线的等宽字体。例如,Pica、Elite 和 Courier New 都是等宽字体。
FF_ROMAN 指定具有衬线的等比字体。例如 MS Serif。
FF_SCRIPT 指定设计为类似手写体的字体。例如 Script 和 Cursive。
FF_SWISS 指定不具有衬线的等比字体。例如 MS Sans Serif。

字体间距和字体系列可以用布尔运算符 OR 连接(即符号 |)。 lfFaceName 字体名称,名称不得超过 31 个字符。如果是空字符串,系统将使用第一个满足其它属性的字体。

3.outtext

当前位置输出文字。(不要问我什么是当前位置,之前讲过)

void EGEAPI outtext(LPCSTR  textstring, PIMAGE pimg = NULL);                   // 在当前位置输出文字
void EGEAPI outtext(LPCWSTR textstring, PIMAGE pimg = NULL);                   // 在当前位置输出文字
void EGEAPI outtext(CHAR  c, PIMAGE pimg = NULL);                              // 在当前位置输出字符
void EGEAPI outtext(WCHAR c, PIMAGE pimg = NULL);                              // 在当前位置输出字符

4.outtexyxy

指定位置输出文字。(这个就比较好理解)

void EGEAPI outtextxy(int x, int y, LPCSTR  textstring, PIMAGE pimg = NULL);   // 在指定位置输出文字
void EGEAPI outtextxy(int x, int y, LPCWSTR textstring, PIMAGE pimg = NULL);   // 在指定位置输出文字
void EGEAPI outtextxy(int x, int y, CHAR c, PIMAGE pimg = NULL);               // 在指定位置输出字符
void EGEAPI outtextxy(int x, int y, WCHAR c, PIMAGE pimg = NULL);              // 在指定位置输出字符

5.outtextrect

在指定矩形区域内输出字符串。

声明:
void outtextrect(
    int x,
    int y,
    int w,
    int h,
    LPCSTR textstring,
    PIMAGE pimg = NULL
);
void outtextrect(
    int x,
    int y,
    int w,
    int h,
    LPCWSTR textstring,
    PIMAGE pimg = NULL
);

参数: x, y, w, h 要输出字符串所在的矩形区域 textstring 要输出的字符串。

6.xyprintf

在指定位置格式化输出文字。 

和我们平常用的printf差不多,举个栗子。

xyprintf(100,100,"%.14lf",PI);

就是在(100,100)的位置14位小数输出π的值(PI是EGE库里的一个常量).

7.rectprintf

在指定矩形格式化输出字符串.

void EGEAPI rectprintf(int x, int y, int w, int h, LPCSTR  fmt, ...); // 在指定矩形输出格式化字符串,指定绘图目标调用settarget
void EGEAPI rectprintf(int x, int y, int w, int h, LPCWSTR fmt, ...); // 在指定矩形输出格式化字符串,指定绘图目标调用settarget

这些变量是什么意思都不用我说了吧。

8.setfont

设置字体。

void EGEAPI setfont(int nHeight, int nWidth, LPCSTR lpszFace,  PIMAGE pimg = NULL);
void EGEAPI setfont(int nHeight, int nWidth, LPCWSTR lpszFace, PIMAGE pimg = NULL);
void EGEAPI setfont(int nHeight, int nWidth, LPCSTR lpszFace,  int nEscapement, int nOrientation,
					int nWeight, int bItalic, int bUnderline, int bStrikeOut, PIMAGE pimg = NULL);
void EGEAPI setfont(int nHeight, int nWidth, LPCWSTR lpszFace, int nEscapement, int nOrientation,
					int nWeight, int bItalic, int bUnderline, int bStrikeOut, PIMAGE pimg = NULL);
void EGEAPI setfont(int nHeight, int nWidth, LPCSTR lpszFace,  int nEscapement, int nOrientation,
					int nWeight, int bItalic, int bUnderline, int bStrikeOut, BYTE fbCharSet,
					BYTE fbOutPrecision, BYTE fbClipPrecision, BYTE fbQuality, BYTE fbPitchAndFamily, PIMAGE pimg = NULL);
void EGEAPI setfont(int nHeight, int nWidth, LPCWSTR lpszFace, int nEscapement, int nOrientation,
					int nWeight, int bItalic, int bUnderline, int bStrikeOut, BYTE fbCharSet,
					BYTE fbOutPrecision, BYTE fbClipPrecision, BYTE fbQuality, BYTE fbPitchAndFamily, PIMAGE pimg = NULL);
void EGEAPI setfont(const LOGFONTA *font, PIMAGE pimg = NULL); // 设置当前字体样式
void EGEAPI setfont(const LOGFONTW *font, PIMAGE pimg = NULL); // 设置当前字体样式

一般来说我们直接

setfont(高度,宽度,"字体名");

就可以了,下面的大家可以看一看。

参数:
nHeight
指定高度(逻辑单位)。如果为正,表示指定的高度包括字体的默认行距;如果为负,表示指定的高度只是字符的高度。

nWidth
字符的平均宽度(逻辑单位)。如果为 0,则比例自适应。

lpszFace
字体名称。对于此参数均有LPCSTR和LPCWSTR两个版本,以上函数声明仅列出一种。提供两个接口是为了方便能同时使用两种不同的字符集。
常用的字体名称有:宋体,楷体_GB2312,隶书,黑体,幼圆,新宋体,仿宋_GB2312,Fixedsys,Arial,Times New Roman
具体可用名字,可查阅你系统已安装字体。

nEscapement
字符串的书写角度,单位为 0.1°。

nOrientation
每个字符的书写角度,单位为 0.1°。

nWeight
字符的笔画粗细,范围 0~1000。0 表示默认粗细。使用数字或下表中定义的宏均可:
粗细值
FW_DONTCARE 0
FW_THIN 100
FW_EXTRALIGHT 200
FW_ULTRALIGHT 200
FW_LIGHT 300
FW_NORMAL 400
FW_REGULAR 400
FW_MEDIUM 500
FW_SEMIBOLD 600
FW_DEMIBOLD 600
FW_BOLD 700
FW_EXTRABOLD 800
FW_ULTRABOLD 800
FW_HEAVY 900
FW_BLACK 900
bItalic 是否斜体,true / false。 bUnderline 是否有下划线,true / false。 bStrikeOut 是否有删除线,true / false。 fbCharSet 指定字符集(详见 LOGFONT 结构体)。 fbOutPrecision 指定文字的输出精度(详见 LOGFONT 结构体)。 fbClipPrecision 指定文字的剪辑精度(详见 LOGFONT 结构体)。 fbQuality 指定文字的输出质量(详见 LOGFONT 结构体)。 fbPitchAndFamily 指定以常规方式描述字体的字体系列(详见 LOGFONT 结构体)。 font 指向 LOGFONT 结构体的指针。 返回值: (无) 示例:
// 设置当前字体为高 16 像素的“宋体”(忽略行距)。
setfont(-16, 0,"宋体");
outtextxy(0, 0,"测试");
// 设置输出效果为抗锯齿(LOGFONTA是MBCS版本,LOGFONTW是UTF16版本)
LOGFONTA f;
getfont(&f);                          // 获取当前字体设置
f.lfHeight = 48;                      // 设置字体高度为 48(包含行距)
strcpy(f.lfFaceName, "黑体");         // 设置字体为“黑体”
f.lfQuality = ANTIALIASED_QUALITY;    // 设置输出效果为抗锯齿  
setfont(&f);                          // 设置字体样式
outtextxy(0,50,"抗锯齿效果");

9.settextjustify

功能:

设置文字对齐方式。

声明:
void settextjustify( int horiz, int vert, PIMAGE pimg = NULL );
参数: horiz 水平对齐方式,可选值 LEFT_TEXT (默认), CENTER_TEXT, RIGHT_TEXT vert 垂直对齐方式,可选值 TOP_TEXT (默认), CENTER_TEXT, BOTTOM_TEXT
水平对齐方式 垂直对齐方式
LEFT_TEXT (默认) 左对齐 TOP_TEXT (默认) 顶部对齐
CENTER_TEXT 居中对齐 CENTER_TEXT 居中对齐
RIGHT_TEXT 右对齐 BOTTOM_TEXT 底部对齐

textstring 要输出的字符串的指针。

void EGEAPI settextjustify(int horiz, int vert, PIMAGE pimg = NULL);

// 设置当前字体样式(详见帮助)
//      nHeight: 字符的平均高度;
//      nWidth: 字符的平均宽度(0 表示自适应);
//      lpszFace: 字体名称;
//      nEscapement: 字符串的书写角度(单位 0.1 度);
//      nOrientation: 每个字符的书写角度(单位 0.1 度);
//      nWeight: 字符的笔画粗细(0 表示默认粗细);
//      bItalic: 是否斜体;
//      bUnderline: 是否下划线;
//      bStrikeOut: 是否删除线;
//      fbCharSet: 指定字符集;
//      fbOutPrecision: 指定文字的输出精度;
//      fbClipPrecision: 指定文字的剪辑精度;
//      fbQuality: 指定文字的输出质量;
//      fbPitchAndFamily: 指定以常规方式描述字体的字体系列。

10.textheight,textwidth

获取当前字体高和宽。

11.ege_drawtext

功能:

在指定位置格式化输出字符串。文本颜色使用 ARGB 颜色,由 setcolor() 指定。

声明:
void ege_drawtext( LPCSTR format, int x, int y, ... );
void ege_drawtext( LPCWSTR format, int x, int y, ... ); 

参数: format 格式字符串。 x 字符串输出时头字母的 x 轴的坐标值 y 字符串输出时头字母的 y 轴的坐标值。 ... 要输出的内容的参数,类似 printf。

四、附录

音乐函数

class MUSIC
{
public:
	MUSIC();
	virtual ~MUSIC();
	operator HWND()const{ return (HWND)m_dwCallBack; }
public:
	int   IsOpen() { return (m_DID != MUSIC_ERROR) ? 1 : 0; }
	DWORD OpenFile(LPCSTR  filepath);
	DWORD OpenFile(LPCWSTR filepath);
	DWORD Play(DWORD dwFrom = MUSIC_ERROR, DWORD dwTo = MUSIC_ERROR);
	DWORD Pause();
	DWORD Seek(DWORD dwTo); //播放位置定位,单位为ms
	DWORD SetVolume(float value);
	DWORD Close();
	DWORD Stop();
	DWORD GetPosition();
	DWORD GetLength();
	// 以下函数GetPlayStatus的返回值为以下之一(意义看后缀):
	// MUSIC_MODE_NOT_OPEN   //没有正确打开
	// MUSIC_MODE_NOT_READY  //设备没准备好 (较少使用)
	// MUSIC_MODE_PAUSE  //暂停中
	// MUSIC_MODE_PLAY   //正在播放
	// MUSIC_MODE_STOP   //成功打开后,或者播放完是这个状态
	// MUSIC_MODE_OPEN   //打开中 (较少使用)
	// MUSIC_MODE_SEEK   //定位中 (较少使用)
	DWORD GetPlayStatus();
private:
	DWORD       m_DID;
	PVOID       m_dwCallBack;
};

 文字函数

// 文字相关函数
void EGEAPI outtext(LPCSTR  textstring, PIMAGE pimg = NULL);                   // 在当前位置输出文字
void EGEAPI outtext(LPCWSTR textstring, PIMAGE pimg = NULL);                   // 在当前位置输出文字
void EGEAPI outtext(CHAR  c, PIMAGE pimg = NULL);                              // 在当前位置输出字符
void EGEAPI outtext(WCHAR c, PIMAGE pimg = NULL);                              // 在当前位置输出字符
void EGEAPI outtextxy(int x, int y, LPCSTR  textstring, PIMAGE pimg = NULL);   // 在指定位置输出文字
void EGEAPI outtextxy(int x, int y, LPCWSTR textstring, PIMAGE pimg = NULL);   // 在指定位置输出文字
void EGEAPI outtextxy(int x, int y, CHAR c, PIMAGE pimg = NULL);               // 在指定位置输出字符
void EGEAPI outtextxy(int x, int y, WCHAR c, PIMAGE pimg = NULL);              // 在指定位置输出字符
void EGEAPI outtextrect(int x, int y, int w, int h, LPCSTR  textstring, PIMAGE pimg = NULL); // 在指定矩形范围输出文字
void EGEAPI outtextrect(int x, int y, int w, int h, LPCWSTR textstring, PIMAGE pimg = NULL); // 在指定矩形范围输出文字
void EGEAPI xyprintf(int x, int y, LPCSTR  fmt, ...); // 在指定位置输出格式化字符串,指定绘图目标调用settarget
void EGEAPI xyprintf(int x, int y, LPCWSTR fmt, ...); // 在指定位置输出格式化字符串,指定绘图目标调用settarget
void EGEAPI rectprintf(int x, int y, int w, int h, LPCSTR  fmt, ...); // 在指定矩形输出格式化字符串,指定绘图目标调用settarget
void EGEAPI rectprintf(int x, int y, int w, int h, LPCWSTR fmt, ...); // 在指定矩形输出格式化字符串,指定绘图目标调用settarget
int  EGEAPI textwidth(LPCSTR  textstring, PIMAGE pimg = NULL);                 // 获取字符串占用的像素宽
int  EGEAPI textwidth(LPCWSTR textstring, PIMAGE pimg = NULL);                 // 获取字符串占用的像素宽
int  EGEAPI textwidth(CHAR  c, PIMAGE pimg = NULL);
int  EGEAPI textwidth(WCHAR c, PIMAGE pimg = NULL);
int  EGEAPI textheight(LPCSTR  textstring, PIMAGE pimg = NULL);                // 获取字符串占用的像素高
int  EGEAPI textheight(LPCWSTR textstring, PIMAGE pimg = NULL);                // 获取字符串占用的像素高
int  EGEAPI textheight(CHAR  c, PIMAGE pimg = NULL);
int  EGEAPI textheight(WCHAR c, PIMAGE pimg = NULL);
void EGEAPI settextjustify(int horiz, int vert, PIMAGE pimg = NULL);

// 设置当前字体样式(详见帮助)
//      nHeight: 字符的平均高度;
//      nWidth: 字符的平均宽度(0 表示自适应);
//      lpszFace: 字体名称;
//      nEscapement: 字符串的书写角度(单位 0.1 度);
//      nOrientation: 每个字符的书写角度(单位 0.1 度);
//      nWeight: 字符的笔画粗细(0 表示默认粗细);
//      bItalic: 是否斜体;
//      bUnderline: 是否下划线;
//      bStrikeOut: 是否删除线;
//      fbCharSet: 指定字符集;
//      fbOutPrecision: 指定文字的输出精度;
//      fbClipPrecision: 指定文字的剪辑精度;
//      fbQuality: 指定文字的输出质量;
//      fbPitchAndFamily: 指定以常规方式描述字体的字体系列。
void EGEAPI setfont(int nHeight, int nWidth, LPCSTR lpszFace,  PIMAGE pimg = NULL);
void EGEAPI setfont(int nHeight, int nWidth, LPCWSTR lpszFace, PIMAGE pimg = NULL);
void EGEAPI setfont(int nHeight, int nWidth, LPCSTR lpszFace,  int nEscapement, int nOrientation,
					int nWeight, int bItalic, int bUnderline, int bStrikeOut, PIMAGE pimg = NULL);
void EGEAPI setfont(int nHeight, int nWidth, LPCWSTR lpszFace, int nEscapement, int nOrientation,
					int nWeight, int bItalic, int bUnderline, int bStrikeOut, PIMAGE pimg = NULL);
void EGEAPI setfont(int nHeight, int nWidth, LPCSTR lpszFace,  int nEscapement, int nOrientation,
					int nWeight, int bItalic, int bUnderline, int bStrikeOut, BYTE fbCharSet,
					BYTE fbOutPrecision, BYTE fbClipPrecision, BYTE fbQuality, BYTE fbPitchAndFamily, PIMAGE pimg = NULL);
void EGEAPI setfont(int nHeight, int nWidth, LPCWSTR lpszFace, int nEscapement, int nOrientation,
					int nWeight, int bItalic, int bUnderline, int bStrikeOut, BYTE fbCharSet,
					BYTE fbOutPrecision, BYTE fbClipPrecision, BYTE fbQuality, BYTE fbPitchAndFamily, PIMAGE pimg = NULL);
void EGEAPI setfont(const LOGFONTA *font, PIMAGE pimg = NULL); // 设置当前字体样式
void EGEAPI setfont(const LOGFONTW *font, PIMAGE pimg = NULL); // 设置当前字体样式
void EGEAPI getfont(LOGFONTA *font, PCIMAGE pimg = NULL);      // 获取当前字体样式
void EGEAPI getfont(LOGFONTW *font, PCIMAGE pimg = NULL);      // 获取当前字体样式

五、后记

那么今天我们讲了音乐函数还有文字函数,下次,我们将会讲解按键鼠标输入的函数,敬请期待!

上期文章:DEV-C++ ege.h库 绘图教程(五)

下期文章:DEV-C++ ege.h库 绘图教程(七)

你可能感兴趣的:(EGE,c++,开发语言)