Podstawowe obiekty graficzne

Klasa Graphics definiuje metody do rysowania następujących rodzajów krzywych: Pierwszy przykład pokazuje wykorzystanie metod służących do rysowania prostokątów.

Jego kod znajduje tutaj. Poniżej przedstawiono część kodu odpowiadającą za rysowanie:

//In FramedArea (a Panel subclass):
public void paint(Graphics g) {
    Dimension d = size();
    Color bg = getBackground();
 
    //Draw a fancy frame around the applet.
    g.setColor(bg);
    g.draw3DRect(0, 0, d.width - 1, d.height - 1, true);
    g.draw3DRect(3, 3, d.width - 7, d.height - 7, false);
}

//In CoordinateArea (a Canvas subclass):
public void paint(Graphics g) {
    //If user has clicked, paint a tiny rectangle where click occurred
    if (point != null) {
        g.fillRect(point.x - 1, point.y - 1, 2, 2);
    }
}
Aplet tworzy (i zawiera) obiekt FramedArea, który z kolei tworzy (i zawiera) obiekt CoordinateArea. Pierwsze wywołanie metody draw3DRect() tworzy prostokąt tak duży jak obszar rysowania obiektu FramedArea. Parametr true informuje o wypukłości prostokąta. Drugie wywołanie metody draw3DRect() tworzy drugi prostokąt nieco mniejszy z parametrem false informującym o wklęśnięciu prostokąta. Oba prostokąty tworzą obszar zawierający obiekt CoordinateArea.

Obiekt CoordinateArea używa metody fillRect() do narysowania prostokąta dwa na dwa pixele w miejscu kliknięcia myszą przez użytkownika.

Drugi przykład demonstruje wszystkie krzywe, które można rysować i wypełniać:

Tutaj znajduje się kod powyższego apletu. Zmienne rectHeight i rectWidth zawierają rozmiar w pixelach obszaru, w którym każda z krzywych musi zostać narysowana.

Poniżej przedstawiono fragment kodu odpowiadający za rysowanie:

Color bg = getBackground();
Color fg = getForeground();
. . .

// drawLine() 
g.drawLine(x, y+rectHeight-1, x + rectWidth, y); // x1, y1, x2, y2
. . .

// drawRect() 
g.drawRect(x, y, rectWidth, rectHeight); // x, y, width, height
. . .

// draw3DRect() 
g.setColor(bg);
g.draw3DRect(x, y, rectWidth, rectHeight, true);
g.setColor(fg);
. . .

// drawRoundRect() 
g.drawRoundRect(x, y, rectWidth, rectHeight, 10, 10); // x, y, w, h, arcw, arch
. . .

// drawOval() 
g.drawOval(x, y, rectWidth, rectHeight); // x, y, w, h
. . .

// drawArc() 
g.drawArc(x, y, rectWidth, rectHeight, 90, 135); // x, y, w, h
. . .

// drawPolygon() 
Polygon polygon = new Polygon();
polygon.addPoint(x, y);
polygon.addPoint(x+rectWidth, y+rectHeight);
polygon.addPoint(x, y+rectHeight);
polygon.addPoint(x+rectWidth, y);
//polygon.addPoint(x, y); //don't complete; fill will, draw won't
g.drawPolygon(polygon); 
. . .

// fillRect() 
g.fillRect(x, y, rectWidth, rectHeight); // x, y, width, height
. . .

// fill3DRect() 
g.setColor(bg);
g.fill3DRect(x, y, rectWidth, rectHeight, true);
g.setColor(fg);
. . .

// fillRoundRect() 
g.fillRoundRect(x, y, rectWidth, rectHeight, 10, 10); // x, y, w, h, arcw, arch
. . .

// fillOval() 
g.fillOval(x, y, rectWidth, rectHeight); // x, y, w, h
. . .

// fillArc() 
g.fillArc(x, y, rectWidth, rectHeight, 90, 135); // x, y, w, h
. . .

// fillPolygon() 
Polygon filledPolygon = new Polygon();
filledPolygon.addPoint(x, y);
filledPolygon.addPoint(x+rectWidth, y+rectHeight);
filledPolygon.addPoint(x, y+rectHeight);
filledPolygon.addPoint(x+rectWidth, y);
//filledPolygon.addPoint(x, y);
g.fillPolygon(filledPolygon); 

Jerzy Bobiński - Gdańsk 03.05.1998