ZEngine Demo 3 - ZFont 初级使用



easycker
2010-11-09 22:21:47

[i=s] 本帖最后由 easycker 于 2010-11-10 16:34 编辑 [/i]

ZFont :字体类,使用方法就是加载字体文件,然后将字符串放到字体类中,然后显示

一,显示Hello World!你好,世界

Game.h:[code]
#ifndef _GAME_H
#define _GAME_H

#include "ZGame.h"

class Game : public ZGame
{
public:
Game(){}
~Game(){}

void GameInitial();
void GameCircle();
void GameDrawScene();
void GameButtonDown(int nKeyNumber);
void GameButtonUp(int nKeyNumber);
void GameEnd();

private:
ZFont *m_font; //(1) 定义一个ZFont对象
};

#endif
[/code]Game.cpp:[code]
//游戏入口类

#include "Game.h"

void Game::GameInitial()
{
//设定背景色为白色
ZPaint::SetScreenColors(255,255,255);

//(2)创建并加载 字体
m_font = new ZFont(); //也可以写 this->m_font = new ZFont(); 一样的this调用比较方便,写个->就可以调出成员列表
m_font->Load("./fonts/simfang.ttf"); //加载ttf字体库文件.默认16号字

//(3)设定下面那段字的颜色
m_font->SetTextColor(ZImage::RGBA(255,0,0,0)); //设定文字为红色(RGBA(红,绿,蓝,透明)取值0-255),去掉这句话,文字默认黑色

//(4)添加文字到m_font
m_font->SetText("123");
m_font->SetText("测试",0,20); //在0,20添加文字 测试

m_font->SetTextColor(ZImage::RGBA(0,0,255,0)); //蓝色
m_font->SetText("Hello World!",0,60);

m_font->SetTextColor(ZImage::RGBA(0,0,0,0)); //黑色
m_font->SetText("你好 世界!",100,80);
}


//游戏循环
void Game::GameCircle()
{

}

//游戏绘图
void Game::GameDrawScene()
{
//(final)显示
m_font->Show();
}

//按下按键
void Game::GameButtonDown(int nKeyNumber)
{

}

//弹起按键
void Game::GameButtonUp(int nKeyNumber)
{

}

//游戏结束
void Game::GameEnd()
{
Quit();
}
[/code][attach]16677[/attach]


二,字体变化

Game.h:[code]
#ifndef _GAME_H
#define _GAME_H

#include "ZGame.h"

class Game : public ZGame
{
public:
Game(){}
~Game(){}

void GameInitial();
void GameCircle();
void GameDrawScene();
void GameButtonDown(int nKeyNumber);
void GameButtonUp(int nKeyNumber);
void GameEnd();

private:
ZFont *m_font[5]; //(1) 定义5个ZFont对象
};

#endif
[/code]Game.cpp:[code]
//游戏入口类

#include "Game.h"

void Game::GameInitial()
{
//设定背景色为白色
ZPaint::SetScreenColors(255,255,255);

//(2)创建并加载 字体
int i;
for(i=0;i<5;i++)
{
m_font[i] = new ZFont();
m_font[i]->Load("./fonts/simfang.ttf",14); //加载ttf字体库文件,选择14号字.默认16号字
}

//(3)添加文字
m_font[0]->SetText("m_font[0]");
m_font[1]->SetText("m_font[1]");
m_font[2]->SetText("m_font[2]");
m_font[3]->SetText("m_font[3]");
m_font[4]->SetText("m_font[4]");
}


//游戏循环
void Game::GameCircle()
{

}

//游戏绘图
void Game::GameDrawScene()
{
//(final)显示,ZImage和ZFont的Show都可以做图片的大小变化和旋转变化等等的一系列特效
static int alpha = 0; //透明度
static float angle = 0; //角度
static float x = 0,y = 0; //左上角坐标
static float w = 0,h = 0; //宽度和高度

m_font[0]->Show(100,100); //在屏幕100,100处显示m_font
m_font[1]->Show(0,0,ZImage::RGBA(255,255,255,alpha ++)); //透明度变化
m_font[2]->Show(0,0,(float)m_font[2]->GetImageP()->w,(float)m_font[2]->GetImageP()->h,0,0,w ++,h ++); //m_font[2]->GetImageP()->w 是获取m_font背景的大小的宽度,详细说明看ZFont.h的Show函数
m_font[3]->Show(x ++,y ++); //坐标变化
m_font[4]->Show(0,0,(float)m_font[2]->GetImageP()->w,(float)m_font[2]->GetImageP()->h,
0,0,1,1,angle ++,ZImage::RGBA(255,255,255,255)); //旋转显示
}

//按下按键
void Game::GameButtonDown(int nKeyNumber)
{

}

//弹起按键
void Game::GameButtonUp(int nKeyNumber)
{

}

//游戏结束
void Game::GameEnd()
{
Quit();
}

[/code][attach]16678[/attach]
[attach]16679[/attach]
[attach]16680[/attach]


easycker
2010-11-09 22:44:53

图片只能上传3个。没办法了


boy545003571
2010-11-10 00:16:31

先收藏了,有空再好好学习一下~~