array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 第三章 中文绘制 - 爱码网

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();
}

第三章 中文绘制


相关文章: