Skip to content

ImageFont (Bilderschriftart)

Die Klasse ImageFont ist im Paket pi.actor enthalten und kann über die Anweisung import pi.actor.ImageFont; importiert werden.

multiline (mehrzeilig)

public class MultilineDemo extends Scene
{
    public MultilineDemo()
    {
        ImageFont font = new ImageFont("image-font/tetris",
                ImageFontCaseSensitivity.TO_UPPER);
        ImageFontText textField = new ImageFontText(font,
                "Das ist ein laengerer Text, der in mehrere Zeilen unterteilt ist. "
                        + "Zeilenumbrueche\nkoennen auch\nerzwungen werden.",
                20, TextAlignment.LEFT);
        add(textField);
        backgroundColor("white");
        focus(textField);
    }

    public static void main(String[] args)
    {
        Controller.instantMode(false);
        Controller.start(new MultilineDemo());
    }
}
Zum Java-Code: demos/subprojects/demos/src/main/java/demos/classes/actor/image_font/MultilineDemo.java

TextAlignment (Textausrichtung)

public class AlignmentDemo extends Scene
{
    ImageFont font = new ImageFont("image-font/tetris",
            ImageFontCaseSensitivity.TO_UPPER);

    public AlignmentDemo()
    {
        camera().meter(32);
        backgroundColor("blue");
        createText(3, "Dieser Text ist linksbuendig ausgerichtet.", LEFT);
        createText(-2, "Dieser Text ist zentriert ausgerichtet.", CENTER);
        createText(-7, "Dieser Text ist rechtsbuendig ausgerichtet.", RIGHT);
    }

    private void createText(int y, String content, TextAlignment alignment)
    {
        ImageFontText line = new ImageFontText(font, content, 18, alignment);
        line.anchor(-9, y);
        add(line);
    }

    public static void main(String[] args)
    {
        Controller.instantMode(false);
        Controller.start(new AlignmentDemo());
    }
}
Zum Java-Code: demos/subprojects/demos/src/main/java/demos/classes/actor/image_font/AlignmentDemo.java

color (Farbe)

public class ColorDemo extends Scene
{
    ImageFont font = new ImageFont("image-font/tetris",
            ImageFontCaseSensitivity.TO_UPPER);

    public ColorDemo()
    {
        backgroundColor("#eeeeee");
        int y = 9;
        for (Map.Entry<String, Color> entry : colors.getAll().entrySet())
        {
            setImageFontText(entry.getKey(), -5, y);
            y--;
        }
    }

    public void setImageFontText(String color, int x, int y)
    {
        ImageFontText textField = new ImageFontText(font, color, color);
        textField.anchor(x, y);
        add(textField);
    }

    public static void main(String[] args)
    {
        Controller.instantMode(false);
        Controller.start(new ColorDemo(), 600, 800);
    }
}
Zum Java-Code: demos/subprojects/demos/src/main/java/demos/classes/actor/image_font/ColorDemo.java

real-world example (Beispiel aus der Praxis)

public class CopyrightScene extends BaseScene implements KeyStrokeListener
{
    public CopyrightScene()
    {
        super(null);
        backgroundColor(COLOR_SCHEME_GREEN.getWhite());
        String origText = "\"TM and ©1987 ELORG,\n" + //
                "Tetris licensed to\n" + //
                "Bullet-Proof\n" + //
                "software and\n" + //
                "sub-licensed to\n" + //
                "Nintendo.\n" + //
                "\n" + //
                "©1989 Bullet-Proof\n" + //
                "software\n" + //
                "©1989 Nintendo\n" + //
                "\n" + //
                "All rights reserved.\n" + //
                "\n" + //
                "original concept\n" + //
                "design and programm\n" + //
                // Im Original: by Alexey Pazhitnov."
                // ." kann mit ImageFont nicht als ein Zeichen dargestellt
                // werden.
                // U+E000..U+F8FF BMP (0) Private Use Area
                "by Alexey Pazhitnov\uE000\n" + "\n";
        ImageFontText text = new ImageFontText(Font.getFont(), origText, 21,
                TextAlignment.CENTER);
        text.anchor(-2, 0);
        add(text);
        delay(4, this::startTitleScene);
    }

    public void startTitleScene()
    {
        Tetris.start(new TitleScene());
    }

    /**
     * Wenn eine beliebige Taste gedrückt wird, wird zum nächsten Bildschirm,
     * der Titelszene, gesprungen.
     */
    public void onKeyDown(KeyEvent keyEvent)
    {
        startTitleScene();
    }

    public static void main(String[] args)
    {
        Tetris.start(new CopyrightScene());
    }
}
Zum Java-Code: demos/subprojects/games/tetris/src/main/java/tetris/scenes/CopyrightScene.java