设为首页 加入收藏

TOP

利用Android游戏引擎Angle开发界面——显示汉字
2014-11-24 07:20:53 来源: 作者: 【 】 浏览:1
Tags:利用 Android 游戏 引擎 Angle 开发 界面 显示 汉字

public final class StringToBitmap {


public static Bitmap getBitmapFromSingleLineString(String text, int textColor, int backgroundColor, String fontType,
int fontSize, int bitmapWidth, int bitmapHeight, Paint.Align align) {
Bitmap bitmap = Bitmap.createBitmap(bitmapWidth, bitmapHeight,
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
// 背景颜色
canvas.drawColor(backgroundColor);
TextPaint paint = new TextPaint();


Typeface typeface = Typeface.create(fontType, Typeface.NORMAL);
// 消除锯齿
paint.setAntiAlias(true);
// 字体为红色
paint.setColor(textColor);
paint.setTypeface(typeface);
paint.setTextSize(fontSize);
paint.setTextAlign(align);

CharSequence truncateText = TextUtils.ellipsize(text, paint
, bitmapWidth, TextUtils.TruncateAt.END);
// 绘制字体
canvas.drawText(truncateText, 0, truncateText.length(), 0, bitmapHeight - 1, paint);
return bitmap;
}
}


仅仅是上面的处理还不够,生成了一个Bitmap,还需要转变成纹理。


Angle类库中的AngleTextureEngine只能从Resouce中加载纹理。第一步,我修改了AngleTextureEngine类,添加了下面的方法以便从已有的Bitmap生成纹理对象。


public AngleTexture createTextureFromBitmap(Bitmap bitmap)
{
AngleTexture tex = null;
Iterator it = mTexturesX.iterator();
while (it.hasNext())
{
tex = it.next();
if (tex instanceof AngleBitmapTexture)
{
// Texture already exists
if (((AngleBitmapTexture) tex).mBitmap == bitmap)
{
tex.mRefernces++;
return tex;
}
}
}


tex = new AngleBitmapTexture(this, bitmap);
mTexturesX.add(tex);
return tex;
}


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇iOS6.0 新功能:在应用程序内展示.. 下一篇控制Linux动态链接库导出函数

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·数据库:推荐几款 Re (2025-12-25 12:17:11)
·如何最简单、通俗地 (2025-12-25 12:17:09)
·什么是Redis?为什么 (2025-12-25 12:17:06)
·对于一个想入坑Linux (2025-12-25 11:49:07)
·Linux 怎么读? (2025-12-25 11:49:04)