Benutzer-Werkzeuge

Webseiten-Werkzeuge


figures

Dies ist eine alte Version des Dokuments!


Showcase: Basisfiguren

Die geometrischen Basisfiguren lassen sich ohne Zeichenaufwand objektorientiert erzeugen und verwalten. Im Folgenden wird dies für einige Basisfiguren demonstriert. Insbesondere wird die Umsetzung der ersten vier konzeptuellen Anforderungen des GeoFaSC-Konzeptes aufgezeigt.

Die obige Abbildung zeigt zusätzlich zu den Basisfiguren zwei Ampeln (siehe Showcase: Disco-Licht) und ein gefülltes Polygon mit seinen Begrenzungspunkten (das Ansichtsobjekt des Polygons wurde ersetzt).

Im Paket

geofasc.swing

der Bibliothek finden sich alle Figuren-Klassen:

geofasc.swing.Circle
geofasc.swing.Ellipse
geofasc.swing.LineSegment
geofasc.swing.Point
geofasc.swing.Polyline
geofasc.swing.Rectangle
geofasc.swing.Square

Es macht daher Sinn mittels

import geofasc.swing.*;

zunächst die Figuren-Klassen zu importieren.

Ein Rechteck der Größe 200 x 100 Pixel (Breite x Höhe), mit abgerundeten Ecken und einer anfänglichen x-y-Positionierung von x=123 und y=234 bezüglich eines umgebenden Containers, der diese Figur enthält (z.B. ein JFrame oder JPanel) kann beispielsweise so erzeugt werden:

Rectangle rectangle = new Rectangle(200, 100);
rectangle.setRoundedCorners(true);       
// Breite und Höhe der abger. Ecken  
rectangle.setArcSize(arcWidth, arcHeight);
rectangle.setFigureLocation(123, 234);
...   

Ein Kreis kann analog erzeugt werden. Der Kreis ist zunächst leer und erhält den Radius der Größe 60 Pixel sowie eine eigene Linienfarbe. Auf jede Figur kann mittels ihres Modells, also der eigentlichen Repräsentation der Figur, zugegriffen werden:

Circle circle = new Circle();
CircleModel model = circle.getModel();
model.setRadius(60);
model.setLineColor(Color.GREEN);
...

Eine Polyline ist ein Polygonzug definiert durch eine beliebige Menge von Punkten. Die folgende Polyline ist in Wirklichkeit ein Polygon und wird auch als solches gezeichnet, da der erste und letzte Begrenzungspunkt gleich sind:

// Die Polylinie ist ein Polygon, erster und letzter Punkt sind gleich
Polyline polygon = new Polyline(new Point(30,10),  new Point(10,50), 
                                new Point(50,50),  new Point(80,150),
                                new Point(40,160), new Point(30,10));
 
// Entfernen des zweiten Begrenzungspunktes mit automatischem Neuzeichnen
polygon.removePoint(10,50); 
...

Das Zeichnen einer Figur kann bei Bedarf überschrieben werden, wie für das folgende LineSegment-Objekt gezeigt wird. Dazu kann einer Figur ein neues UI-Objekt mit eigener Zeichemethode übergeben werden. Bei der folgenden Figur wird einfach ihre Begrenzungsbox mit gezeichnet.

LineSegment line = new LineSegment(x1, y1, x2, y2);
 
// Austausch des UI (= Ansicht der Linie)
line.setUI(new BasicLineSegmentUI() {
 
  @Override
  protected void paintFigure(Graphics g, AbstractFigure f) {
    FigureModel figureModel = f.getModel();
    // Zeichnen der Bounding-Box
    g.setColor(Color.LIGHT_GRAY);
    g.drawRect(0, 0, figureModel.getWidth(), figureModel.getHeight());
    // Zeichnen der Linie
    super.paintFigure(g, f);
  }
});
figures.1393517143.txt.gz · Zuletzt geändert: 2014/02/27 17:05 von admin