绘制字模文本

相关函数原型

字模初始化

函数名

px_bool PX_FontModuleInitialize(px_memorypool *mp,PX_FontModule *module)

说明

初始化一个字模库

参数

Mp 内存池

Module 字模库

返回值

如果成功返回PX_TRUE,否者返回PX_FALSE

 

以字模库绘制文本

函数名

px_int PX_FontModuleDrawText(px_surface *psurface,PX_FontModule *mod,int x,int y,PX _ALIGN align,const px_char *Text,px_color Color)

说明

以该字模库绘制文本,注意,输入的文本编码必须和字模库一致

参数

Psurface 目标表面

X 原点x坐标

Y 原点y坐标

 

Text 文本

Color字颜色

Mod 字模库

Align 字体对齐模式

PX _ALIGN_LEFTTOP, 左上角对齐

         PX _ALIGN_MIDTOP,居中顶部对齐

         PX _ALIGN_RIGHTTOP,右上角对齐

         PX _ALIGN_LEFTMID,靠左居中对齐

         PX _ALIGN_CENTER,中心对齐

         PX _ALIGN_RIGHTMID,靠右居中对齐

         PX _ALIGN_LEFTBOTTOM,靠左底部对齐

返回值

-绘制文本的像素宽度

 

1.创建字模库

使用PainterEngine绘制字模文本,首先需要创建字模库,打开PainterEngine_Application.h,PX_Application的结构体定义中,添加PX_FontModule

typedef struct

{

    PX_FontModule fm;

    PX_Runtime runtime;

}PX_Application;

 

2.初始化字模库

打开PainterEngine_Application.c,添加初始化字模库代码

px_bool PX_ApplicationInitialize(PX_Application *pApp,px_int screen_width,px_int screen_height)

{

    PX_ApplicationInitializeDefault(&pApp->runtime, screen_width, screen_height);

    if(!PX_FontModuleInitialize(&pApp->runtime.mp_resources,&pApp->fm)) return PX_FALSE;

    

    return PX_TRUE;

}

3.加载字模文件

打开PainterEngine_Application.c,添加初始化字模加载代码

px_bool PX_ApplicationInitialize(PX_Application *pApp,px_int screen_width,px_int screen_height)

{

    PX_ApplicationInitializeDefault(&pApp->runtime, screen_width, screen_height);

    if(!PX_FontModuleInitialize(&pApp->runtime.mp_resources,&pApp->fm)) return PX_FALSE;

    if(!PX_LoadFontModuleFromFile(&pApp->fm,"D:/gbk.pxf")) return PX_FALSE;//加载中文字模

    return PX_TRUE;

}

 

4.绘制字模文本

打开PainterEngine_Application.c, PX_ApplicationRender中绘制字模文本:

你好,PainterEngine”

px_bool PX_ApplicationInitialize(PX_Application *pApp,px_int screen_width,px_int screen_height)

{

    PX_ApplicationInitializeDefault(&pApp->runtime, screen_width, screen_height);

    if(!PX_FontModuleInitialize(&pApp->runtime.mp_resources,&pApp->fm)) return PX_FALSE;

    if(!PX_LoadFontModuleFromFile(&pApp->fm,"D:/gbk.pxf")) return PX_FALSE;//加载中文字模

    return PX_TRUE;

}

 

px_void PX_ApplicationRender(PX_Application *pApp,px_dword elpased)

{

    px_surface *pRenderSurface=&pApp->runtime.RenderSurface;

    PX_RuntimeRenderClear(&pApp->runtime,PX_COLOR(255,255,255,255));

    PX_FontModuleDrawText(pRenderSurface,&pApp->fm,10,100,PX _ALIGN_LEFTTOP,"你好,PainterEngine",PX_COLOR(255,0,0,128));

}