我使用 Libgdx 实现平滑文本的解决方案
我使用 BitmapFont,并使用 Hiero 工具生成 3 种不同大小的相同字体
例如 Arial 16、Arial 32、Arial 64
我将它们放在我的资产文件中并根据屏幕大小仅使用(加载)其中一个
if(Gdx.graphics.getWidth() < (480*3)/2)
{
textGametFont = BitmapFont(Gdx.files.internal(nameFont+16+".fnt"),
Gdx.files.internal(nameFont+16+".png"), false);
}else
{
if(Gdx.graphics.getWidth() < (3*920)/2)
{
textGametFont = new BitmapFont(Gdx.files.internal(nameFont+32+".fnt"),
Gdx.files.internal(nameFont+32+".png"), false);
}else
{
textGametFont = new BitmapFont(Gdx.files.internal(nameFont+64+".fnt"),
Gdx.files.internal(nameFont+64+".png"), false);
}
}
然后我使用这行代码来更高的结果质量向下和向上缩放
textGametFont.getRegion().getTexture().setFilter(TextureFilter.Linear, TextureFilter.Linear);
缩放图像
为了处理设备的所有分辨率类型的字体大小,我使用这两个函数
public static float xTrans(float x)
{
return x*Gdx.graphics.width/(YourModel.SCREEN_WIDTH);
}
public static float yTrans(float y)
{
return y*Gdx.graphics.height/YourModel.SCREEN_Height;
}
我使用的模型屏幕分辨率是
屏幕宽度 = 480
屏幕高度 = 320
将比例设置为字体
textGametFont.setScale((xtrans(yourScale)+ ytrans(yourScale))/2f);
最后画出你的文字
textGametFont.draw(batch, "WINNER !!", xTrans(250), yTrans(236));
希望这是清晰和有用的!!!