第三章 中文绘制

Libgdx底层采用OpenGL实现,因此支持中文,汉字以贴图形式显示出来,需要读取包含中文信息的.fnt文件

和相应的.png文件来显示,因此我们的工具Hiero就出来了,运行界面如下图

Hiero工具

1.用于制作xxx.fnt和xxx.png文件的工具,主要用于中文绘制

2.使用方法:读取fnt配置文件和读取对应的png图片中的汉字并显示出来(PS.也就是说你要输出的汉字必须是你这个fnt和png里有的才会显示出来,待会演示)

3下载地址:https://code.google.com/p/libgdx/downloads/list(emmmm....这个网站好像得科学上网 百度一下Hiero应该有至少CSDN有人传了)

4.保存方法:Sample Text输入完你的字然后调试完各种乱七八糟的偏好后,我们就可以来保存了,首先点击File 


有四个选项,第一,二是打开保存这个Hiero自带格式(就像Photoshop的PSD一样,供自己软件用),所以我们要选择第三个Save BMFont files保存为x.fnt

Bitmap Font

有了图片当然要用它,不然做上一步就没意义了,那么首先来了解Bitmap Font

1.定义:通过读取2个文件,一个是图片TextureRegion,另一个是描述了每个字符位置及相关信息的配置文件,他们都是使用SpriteBatch绘制的。

2.用途:渲染静态文本,同时可以设置文字颜色,文字大小等。

3.BitmapFont3个参数中最后一个参数是设置文字是否翻转。

讲完了废话般的定义就直接正题。

如何进行文字的单行显示?

1.draw()方法:draw(SpriteBatch batch,Char string,float x,float y)

2.SpriteBatch类还是画笔之前说过了.

3.第二个Char的是目标字符串,也就是你打算在你的android项目上显示的东西,这里的字在强调下,必须是刚才上一步的.fnt里有的字,顺序可以不一样没关系,但字一定是之前有的才会显示,不然不会显示,直接当你没输入

4.第三第四个值是绘制中文字符在你android系统的位置坐标,是普通的坐标系(小学数学那种第一象限)

好接下来来个演示

SpriteBatch batch;
BitmapFont font;

@Override
public void create () {

   batch=new SpriteBatch();
   font =new BitmapFont(Gdx.files.internal("texs.fnt"),Gdx.files.internal("texs.png"),false);
   //font.setColor(Color.RED);//变色,原来颜色直接叠加红色
   font.getData().setScale(4.0f);//将字体大四倍

}

@Override
public void render () {
   Gdx.gl.glClearColor(1,1,1,1);//设置背景为白色
   Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);//清屏
   batch.begin();
       font.draw(batch,"我超喜欢飒沓壹玖壹as雅施达1",120,600);//原图只有 “我超喜欢玖壹壹的歌
   batch.end();
}

所以我们看到的结果会是这样 直接无视你图片中没有的字不管是字母还是汉字数字。

那么如何进行文字的多行显示?emm..会换行那种

其实只要加个\n就换行了,至于网上说的drawMultiLine()好像更新换代后没了。。。。。

font.draw(batch,"人生若只如初见,何事秋风悲画扇。\n" +
   "等闲变却故人心,却道故人心易变。",Gdx.graphics.getWidth()/5,0.8f*Gdx.graphics.getHeight());

emmmm还有一个方法就是截断字句

draw(Batch batch, Char str, float x, float y, int start , int end, float targetWidth,int halign, boolean wrap)

start是从第几个字符开始,end是到第几个字符结束,但后面三个值我不明白,有知道的可以留言

@Override
public void render () {
   Gdx.gl.glClearColor(1,1,1,1);//设置背景为白色
   Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);//清屏
   batch.begin();
   font.draw(batch,"人生若只如初见,何事秋风悲画扇。\n" +
"等闲变却故人心,却道故人心易变。",Gdx.graphics.getWidth()/5,0.8f*Gdx.graphics.getHeight());
font.draw(batch,"人生若只如初见,何事秋风悲画扇。" ,400,800,2,10,10f,200,true);

   //font.draw(batch,"人生若只如初见,何事秋风悲画扇。" ,400,200);
   batch.end();
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值