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); //播放位置定位,单位为msDWORD 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_DONTCARE0
FW_THIN100
FW_EXTRALIGHT200
FW_ULTRALIGHT200
FW_LIGHT300
FW_NORMAL400
FW_REGULAR400
FW_MEDIUM500
FW_SEMIBOLD600
FW_DEMIBOLD600
FW_BOLD700
FW_EXTRABOLD800
FW_ULTRABOLD800
FW_HEAVY900
FW_BLACK900
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_DONTCARE0
FW_THIN100
FW_EXTRALIGHT200
FW_ULTRALIGHT200
FW_LIGHT300
FW_NORMAL400
FW_REGULAR400
FW_MEDIUM500
FW_SEMIBOLD600
FW_DEMIBOLD600
FW_BOLD700
FW_EXTRABOLD800
FW_ULTRABOLD800
FW_HEAVY900
FW_BLACK900
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); //播放位置定位,单位为msDWORD 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库 绘图教程(七)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/659942.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UE5/UE4中3D汉字字体文字的创建与实现

本案例工程下载位置:https://mbd.pub/o/bread/ZZqVmJ9v 在虚幻引擎5(UE5)和虚幻引擎4(UE4)中,实现3D汉字字体的创建是一项常见的需求。 本文将详细介绍两种有效的方法: 1.通过TextRender配合Of…

《区块链简易速速上手小册》第9章:区块链的法律与监管(2024 最新版)

文章目录 9.1 法律框架和挑战9.1.1 基础知识9.1.2 主要案例:加密货币的监管9.1.3 拓展案例 1:跨国数据隐私和合规性9.1.4 拓展案例 2:智能合约的法律挑战 9.2 区块链的合规性问题9.2.1 基础知识9.2.2 主要案例:加密货币交易所的合…

python的深浅拷贝

在Python中,深拷贝(deep copy)和浅拷贝(shallow copy)是用于复制对象的两种方式。 先通俗地解释一下深拷贝和浅拷贝。 想象一下你有一个盒子(原始对象),里面装着几本书(…

DevOps落地笔记-03|用户故事:对用户需求达成共识的关键

上一讲主要跟你介绍了如何使用影响地图这个工具来进行产品定义、里程碑规划和用户需求分析。影响地图让我们始终以达到目标为核心,并让功能和需求不偏离该目标,从而让交付更有重点。可视化、结构化的思维导图为技术和业务人员创建了共享的整体视图&#…

769933-15-5,Biotin aniline,可以合成多种有机化合物和聚合物

您好,欢迎来到新研之家 文章关键词:769933-15-5,Biotin aniline,生物素苯胺,生物素-苯胺 一、基本信息 产品简介:Biotin Aniline,一种具有重要生物学功能的化合物,不仅参与了维生…

Docker多节点部署Minio分布式文件系统并测试

文章目录 一、前提准备二、文件配置1. .env2. env/minio.env3. docker-compose-minio.yml 三、测试四、Java测试1. 引入依赖2. 增删改 一、前提准备 准备如下文件夹和文件 ./ ├── docker-compose-minio.yml ├── .env ├── env │ ├── minio.env ├── minio │…

基于Qt 视频播放器mp4/wav/avi/等等(进阶)

​## Qt音视频相关 Qt 多媒体音频模拟按钮发音(音视频启动)基于Qt 音乐播放器mp3(进阶)## 项目工具 工具名

场效应管学习笔记

目录 一、场效应管的基本原理 二、场效应管的特性 三、场效应管的应用 四、学习总结 一、场效应管的基本原理 场效应管(Field-Effect Transistor,简称 FET)是一种利用电场效应控制电流的半导体器件。与双极型晶体管不同,场效应…

C#网络爬虫之TianyaCrawler实战经验分享

互联网时代的到来带来了大量的数据,而网络爬虫技术成为了获取这些数据的重要途径之一。如果你是一名C#开发者,那么你可能会对TianyaCrawler这个强大的网络爬虫框架感兴趣。本文将带你深入了解TianyaCrawler,分享它的技术概况、使用场景&#…

显示企业信息的SSL证书

随着互联网的发展,以及《网络安全法》、《数据安全法》、《个人信息保护法》等法律法规的出台,越来越多的企业意识到保护用户信息的重要性,尤其是对于涉及商业交易和个人数据的网站。为了保护网站安全和用户隐私,给网站部署SSL证书…

索引创建原则

创建索引是一个优化数据库查询性能的关键步骤。正确的索引可以大幅提高查询效率,减少数据的检索时间。但是,不恰当的索引会增加额外的维护成本,并可能降低某些数据库操作的效率。以下是一些创建索引时应遵循的原则: 索引创建原则…

02-opencv简单实例效果和基本介绍-上

机器视觉概述 机器视觉是人工智能正在快速发展的一个分支。简单说来,机器视觉就是用机器代替人眼来做测量和判断。机器视觉系统是通过机器视觉产品(即图像摄取装置,分CMOS和CCD两种)将被摄取目标转换成图像信号,传送给专用的图像处理系统,得到被摄目标的形态信息,根据像素…

从零开始复现GPT2(四):训练代码的实现

源码地址:https://gitee.com/guojialiang2023/gpt2 GPT2 模型Configuration类定义 Recorder训练框架Trainer训练代码GPT2TrainingSpec 类train_gpt2_model 函数add_subparser 函数 模型 Configuration 这段代码定义了一个名为 TrainConfig 的 Python 类&#xff0c…

异步解耦之RabbitMQ(一)

引言 什么是MQ?为什么要用MQ? MQ是消息队列(Message Queue)的简称。消息队列是一种在应用系统之间传递消息的方法,它实现了异步通信的机制,解耦了不同组件或系统之间的直接依赖关系。通过将消息发送到消息…

【Java程序设计】【C00205】基于(JavaWeb+SSM)的商场停车服务管理系统(论文+PPT)

基于(JavaWebSSM)的商场停车服务管理系统(论文PPT) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于ssm的商场停车服务管理系统 本系统分为管理员和用户2个功能模块。 管理员:管理员进入主页面&…

Codeforces Round 922 (Div. 2)补题

Brick Wall(Problem - A - Codeforces) 题目大意:规定砖的大小为1*k(k>2),现在有一面n*m的砖墙,n是墙高,m是墙宽,砖在砖墙中有两种放法,水平放置和竖直放置&#xff…

Django_基本增删改查

一、前提概述 通过项目驱动来学习,以图书管理系统为例,编写接口来实现对图书信息的查询,图书的添加,图书的修改,图书的删除等功能。(不包含多重信息的校验,只为了熟悉增删改查接口的实现流程&a…

Flink 读取 Kafka 消息写入 Hudi 表无报错但没有写入任何记录的解决方法

博主历时三年精心创作的《大数据平台架构与原型实现:数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,京东购书链接:https://item.jd.com/12677623.html,扫描左侧二维…

前端封装websocket类,实现消息注册和全局回调

实现消息注册和回调函数,实现全局使用同一个webscoket对象,并实现断线重连和心跳连接等功能,可以实现全局使用唯一实例,可以另外进行拓展配置 // WebSocket类对象 class WebSocketCli {// 构造函数constructor(url: string, opts…

北斗编码实现

本文根据北斗格网编码标注编写的测试代码, 北斗国标描述网址 http://c.gb688.cn/bzgk/gb/showGb?typeonline&hcno77B7EA113926D3247F9688324D4A91C8 我将北斗编码整理成一张图, 如下(代码在文末附上): #include "stdafx.h" #include <vector> #include &…