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.
- Linie (metoda
drawLine()
, która rysuje linię w aktualnym kolorze obiektu typu Graphics;- Prostokąty (metody
drawRect()
,fillRect()
, orazclearRect()
-- gdziefillRect()
wypełnia prostokąt aktywnym kolorem obiektu Graphics, a metodaclearRect()
wypełnia prostokąt kolorem tła obiektu nadrzędnego typu Component.- Wypukłe lub wklęsłe prostokąty (metody
draw3DRect()
ifill3DRect()
)- Prostokąty z zaokrąglonymi narożami (metody
drawRoundRect()
ifillRoundRect()
)- Owale (metody
drawOval()
ifillOval()
)- Łuki (metody
drawArc()
ifillArc()
)- Wieloboki (metody
drawPolygon()
ifillPolygon()
)
Jego kod znajduje tutaj. Poniżej przedstawiono część kodu odpowiadającą za rysowanie:
Aplet tworzy (i zawiera) obiekt FramedArea, który z kolei tworzy (i zawiera) obiekt CoordinateArea. Pierwsze wywołanie metody//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); } }draw3DRect()
tworzy prostokąt tak duży jak obszar rysowania obiektu FramedArea. Parametrtrue
informuje o wypukłości prostokąta. Drugie wywołanie metodydraw3DRect()
tworzy drugi prostokąt nieco mniejszy z parametremfalse
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);