gpt4 book ai didi

java - libgdx 绘制汉字

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:39:43 24 4
gpt4 key购买 nike

我喜欢在我的应用程序中打印中文文本。

1.当我尝试这个时,屏幕会是空的。控制台没有报错。

创建方法:

FreeTypeFontGenerator gen = new FreeTypeFontGenerator(Gdx.files.internal("fonts/DFLS1B.TTF"));
font = gen.generateFont(40, "好", false);

渲染方法:

spriteBatch.setColor(1, 1, 1, 1);
spriteBatch.begin();
font.draw(spriteBatch, "好", 10, 100);
spriteBatch.end();

2.当我尝试这个时,屏幕上出现了 3 个不同的汉字,但我不知道为什么画这些汉字。 asd和这三个字符没有任何联系

创建方法:

FreeTypeFontGenerator gen = new FreeTypeFontGenerator(Gdx.files.internal("fonts/DFLS1B.TTF"));
font = gen.generateFont(40);

渲染方法:

spriteBatch.setColor(1, 1, 1, 1);
spriteBatch.begin();
font.draw(spriteBatch, "asd", 10, 100);
spriteBatch.end();

有谁知道如何在 libgdx 中正确绘制汉字(我使用的是当前版本的 libgdx)?例如:你好吗? - 你好吗? - 你好吗?

问候


编辑:这是一个完整的示例,它将在屏幕上显示预期的汉字。我从这里下载了字体: http://www.study-area.org/apt/firefly-font/

package com.mytest;

import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator;
import com.badlogic.gdx.scenes.scene2d.Stage;

public class ChineseFontTest implements ApplicationListener {

private Stage stage;
private SpriteBatch spriteBatch;
public BitmapFont font;

@Override
public void create() {
stage = new Stage(800, 800);
spriteBatch = new SpriteBatch();

FreeTypeFontGenerator gen = new FreeTypeFontGenerator(Gdx.files.internal("fonts/fireflysung.ttf"));
font = gen.generateFont(40, "好你吗", false);

}

@Override
public void dispose() {
stage.dispose();
}

@Override
public void render() {
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
spriteBatch.setColor(1, 1, 1, 1);
spriteBatch.begin();
font.draw(spriteBatch, "你好吗", 10, 100);
spriteBatch.end();
}

@Override
public void resize(int width, int height) {
}

@Override
public void pause() {
}

@Override
public void resume() {
}
}

最佳答案

这是我的答案:

package com.wang.libgdx.test.my;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator;
import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator.FreeTypeFontParameter;
import com.badlogic.gdx.scenes.scene2d.Stage;
import com.badlogic.gdx.scenes.scene2d.ui.Skin;
import com.wang.libgdx.test.utils.GdxTest;

public class TtfFontTest extends GdxTest{

SpriteBatch spriteBatch;
BitmapFont font;

@Override
public void create() {
spriteBatch = new SpriteBatch();

FreeTypeFontParameter parameter = new FreeTypeFontParameter();
parameter.characters=FreeTypeFontGenerator.DEFAULT_CHARS + "你好";
parameter.size = 24;
FreeTypeFontGenerator generator = new FreeTypeFontGenerator(Gdx.files.internal("data/ui/fangzheng.ttf"));
font = generator.generateFont(parameter);
generator.dispose();

}

@Override
public void dispose() {
spriteBatch.dispose();
font.dispose();
}

@Override
public void render() {
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
spriteBatch.begin();
font.draw(spriteBatch, "helloworld", 300,300);
font.draw(spriteBatch, "你好,世界!", 300,330);
spriteBatch.end();
}

}

这是程序的结果。 enter image description here

关于java - libgdx 绘制汉字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22519584/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com