Skip to content

Graphics2D-API

Die Engine-Pi nutzt intensiv die Graphics2D-API.

Um sich mit dieser API vertraut zu machen, gibt es im Demo demos-Subprojekt die Klasse Graphics2DComponent. Dieser Klasse stellt eine Graphics2D-Instanz zur Verfügung und öffnet ein Fenster über die Methode Graphics2DComponent#open().

package demos.graphics2d;

import java.awt.Graphics;
import java.awt.Graphics2D;

import javax.swing.JComponent;
import javax.swing.JFrame;

import pi.util.Graphics2DUtil;

/**
 * Übernimmt den Cast von {@link Graphics} zu {@link Graphics2D} und bietet wie
 * die Actor-Klassen eine {@link #render(Graphics2D)}-Methode an. Außerdem eine
 * {@link #open()}-Methode und ein Fenster zu öffnen, in das gezeichnet werden
 * kann.
 */
public abstract class Graphics2DComponent extends JComponent
{
    /**
     * Wird mehrmals ausgeführt.
     */
    public abstract void render(Graphics2D g);

    /**
     * Wird mehrmals ausgeführt.
     */
    @Override
    public void paintComponent(Graphics graphics)
    {
        if (graphics instanceof Graphics2D graphics2D)
        {
            Graphics2DUtil.antiAliasing(graphics2D, true);
            render(graphics2D);
        }
    }

    /**
     * Öffnet das Fenster.
     */
    public void open()
    {
        JFrame frame = new JFrame("Graphics2D Demo");
        frame.getContentPane().add(this);
        frame.setSize(800, 600);
        frame.setVisible(true);
    }
}
Zum Java-Code: demos//home/runner/work/engine-pi/engine-pi/subprojects/demos/src/main/java/demos/graphics2d/Graphics2DComponent.java

Sehr nahe an der Graphics2D-API ist das Paket pi.graphics.boxes