天天看點

【HGE】使用hgeFont渲染圖檔字型

通過一個簡單的例子來分析

#include "pch.h"
#include <hge.h>
#include <hgesprite.h>
#include <hgefont.h>

#pragma comment(lib, "hge")
#pragma comment(lib, "hgehelpers")

HGE* hge = nullptr;
hgeFont* font = nullptr;

bool FrameFunc()
{
	if (hge->Input_GetKeyState(HGEK_ESCAPE))
		return true;

	return false;
}

bool RenderFunc()
{
	hge->Gfx_BeginScene();
	
	font->Render(50, 10, HGETEXT_LEFT, "0123");
	
	font->printf(50, 60, HGETEXT_CENTER, "456");

	font->printfb(50, 110, 100, 30, HGETEXT_RIGHT | HGETEXT_BOTTOM, "789");

	hge->Gfx_EndScene();
	return false;
}

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
	hge = hgeCreate(HGE_VERSION);
	hge->System_SetState(HGE_SHOWSPLASH, false);
	hge->System_SetState(HGE_FRAMEFUNC, FrameFunc);
	hge->System_SetState(HGE_RENDERFUNC, RenderFunc);
	hge->System_SetState(HGE_SCREENWIDTH, 800);
	hge->System_SetState(HGE_SCREENHEIGHT, 600);
	hge->System_SetState(HGE_WINDOWED, true);
	hge->System_SetState(HGE_USESOUND, false);

	if (hge->System_Initiate()) {
		font = new hgeFont("myfont.ini");
		hge->System_Start();
	}

	delete font;
	hge->System_Shutdown();
	hge->Release();
	return 0;
}
           

效果圖

【HGE】使用hgeFont渲染圖檔字型

素材

【HGE】使用hgeFont渲染圖檔字型

在HGE中,要渲染字型圖檔是通過hgeFont這個類來操作的,它的構造函數傳入的是一個字型描述檔案,而非圖檔檔案。

描述檔案是一個ini格式的檔案

[HGEFONT]
Bitmap=num.png
Char=30,1,1,16,22,0,0
Char=31,1,23,16,22,0,0
Char=32,1,45,16,22,0,0
Char=33,1,67,16,22,0,0
Char="4",1,89,16,22,0,0
Char="5",1,111,16,22,0,0
Char="6",1,133,16,22,0,0
Char="7",1,155,16,22,0,0
Char="8",1,177,16,22,0,0
Char="9",1,199,16,22,0,0
           

Bitmap指向圖檔檔案,Char來設定每一個字元在圖檔中對應的位置及大小

每個Char有7個參數,參數之間用逗号分割

第1個參數:字元的ASCII碼或用雙引号括起來的單字元

第2個參數:字元在圖檔檔案中的X坐标

第3個參數:字元在圖檔檔案中的Y坐标

第4個參數:圖檔寬度

第5個參數:圖檔高度

第6個參數:字元左側水準偏移量

第7個參數:字元右側水準偏移量

輸出字元通過Render、printf、printfb這三種方法,

render是直接渲染字元串,不支援格式化輸出。

printf是支援c風格的格式化輸出,最終也是通過render方法來渲染。

printfb是将字元串渲染一個指定的矩形中,最終也是通過render方法來渲染。

有一個很大的問題:這個描述檔案不支援中文。網上有些修改版解決了問題,有興趣自己去試試。

HGE