LibGdx: Menggabungkan FreeTypeFont dengan Pixmap

Update: 17 Sept 2015, ada perubahan di LibGDX. GetTextureRegion tidak ada lagi, harus diambil di font.getRegions, outputnya juga Array milik LibGDX.

Contoh menggabungkan font (bitmapFont) dengan pixmap sudah ada. Nah masalahnya saat saya mau menggunakan FreeTypeFont yang dibangkitkan dengan FreeTypeFontGenerator. Intinya bagaimana mendapatkan pixmap di font dan menggabungkannya dengan pixmap yang lain. Ini bermanfaat jika kita inginĀ memperlakukanĀ font sebagai Sprite.

 

Pertama kita harus ambil texture milik freetypefont menggunakan getTextureRegion dan getTexture. Kemudian ambil pixmap dari texture tersebut dengan consumePixmap.

Berikut potongan kodenya untuk mempersiapkan sprite yang mengandung kotak dan huruf “X” ditengah

Catatan: Jangan lupa, saat generate project pastikan library “FreeType” dicheck. Lalu copy font (Roboto-Bold.ttf) ke /android/assets/ (untuk mendownloadnya, googling sendiri, banyak kok).


        //siapkan gambar kotak dgn line hitam
        kotakPixmap   = new Pixmap(200,200,Pixmap.Format.RGBA8888);
        kotakPixmap.setColor(Color.RED);
        kotakPixmap.fill();
        kotakPixmap.setColor(Color.BLACK);
        kotakPixmap.drawRectangle(0,0, kotakPixmap.getWidth(), kotakPixmap.getHeight());

        //generate font
        //letakan di /android/assets dan jangan lupa di Run -> Edit Configuration set working directorynya
        FileHandle fontFile = Gdx.files.internal("Roboto-Bold.ttf");
        FreeTypeFontGenerator generator = new FreeTypeFontGenerator(fontFile);
        FreeTypeFontParameter parameter = new FreeTypeFontGenerator.FreeTypeFontParameter();
        //ukuran font
        parameter.size = 50;
        FreeTypeBitmapFontData fontData = generator.generateData(parameter);
        generator.dispose();

        //ambil texture dari font
        Array<TextureRegion> arrTex = font.getRegions();
        fontTex = arrTex.get(0).getTexture();
        //ambil pixmap dari texture
        TextureData td = fontTex.getTextureData();
        Pixmap fontPixmap = td.consumePixmap();

        //ambil posisi font
        BitmapFont.Glyph glyph = fontData.getGlyph('X');
        //gambar karakter font ke dalam pixmap kotak
        kotakPixmap.drawPixmap(fontPixmap, (200 - glyph.width) / 2, (200 - glyph.height) / 2,
                glyph.srcX, glyph.srcY, glyph.width, glyph.height);

        //pindahkan ke sprite
        img = new Texture(kotakPixmap);
        kotakPixmap.dispose();
        fontPixmap.dispose();
        sp = new Sprite(img);

        //jangan lupa setelah digunakan texture dibuang

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.