NazajNaprejKazalo

Stili črt


5.1 Lastnosti črt

Ob možnosti nastavitve barve pisala, nam Java2D omogoča tudi določanje debeline in načina risanje črt ter povezav med pozameznimi segmenti. To naredimo tako, da kreiramo objekt BasicStroke, potem pa objektu Graphics2D povemo, da ga uporabi preko metode setStroke. Nekaj osnovnih konstruktorjev:

5.2 Debelina črt: Primer programa

Uporabljene datoteke: DrawExample4.java, DrawExample3.java, DrawExample2.java, DrawExample1.java, WindowUtil.java in ExitListener.java
import java.awt.*;

public class DrawExample4 extends DrawExample3 {

  public void paintComponent(Graphics g) {

    Graphics2D g2d = (Graphics2D)g;

    g2d.clearRect(0, 0, getSize().width, getSize().height);

    drawFilledCircle(g2d);

    drawBigString(g2d);

    drawHollowCircle(g2d);

  }



  protected void drawHollowCircle(Graphics2D g2d) {

    g2d.setPaint(Color.blue);

    g2d.setStroke(new BasicStroke(8.0F));

    g2d.draw(getCircle());

  }



  public static void main(String[] args) {

    WindowUtil.openInJFrame(new DrawExample4(), 380, 400);

  }

}

5.3 Debelina črt

Izpis: debelina črt v Javi2D

5.4 Stili zaključkov in medsebojnih povezav črt: Primer programa

Uporabljene datoteke: LineStyles.java, WindowUtil.java in ExitListener.java
import com.sun.java.swing.*;

import java.awt.*;

import java.awt.geom.*;



/** An example of line cap and join styles with
 *  Java2D in Java 1.2.
 *  1998 Marty Hall, http://www.apl.jhu.edu/~hall/java/
 */



public class LineStyles extends JPanel {

  private GeneralPath path;

  private static float x = 30, deltaX = 150, y = 300, deltaY = 250,thickness = 40;

  private Circle p1Large, p1Small, p2Large, p2Small,p3Large, p3Small;

  private int compositeType = AlphaComposite.SRC_OVER;

  private AlphaComposite transparentComposite =

    AlphaComposite.getInstance(compositeType, 0.4f);



  public LineStyles() {

    path = new GeneralPath();

    path.moveTo(x, y);

    p1Large = new Circle(x, y, thickness/2);

    p1Small = new Circle(x, y, 2);

    path.lineTo(x + deltaX, y - deltaY);

    p2Large = new Circle(x + deltaX, y - deltaY, thickness/2);

    p2Small = new Circle(x + deltaX, y - deltaY, 2);

    path.lineTo(x + 2*deltaX, y);

    p3Large = new Circle(x + 2*deltaX, y, thickness/2);

    p3Small = new Circle(x + 2*deltaX, y, 2);

    setForeground(Color.blue);

    setFont(new Font("SansSerif", Font.BOLD, 20));

  }



  public void paintComponent(Graphics g) {

    Graphics2D g2d = (Graphics2D)g;

    g2d.clearRect(0, 0, getSize().width, getSize().height);

    g2d.setColor(Color.blue);

    // Default cap and join style

    BasicStroke stroke =
      new BasicStroke(thickness,
                      BasicStroke.CAP_SQUARE,
                      BasicStroke.JOIN_MITER);

    g2d.setStroke(stroke);

    g2d.draw(path);

    drawPoints(g2d, "CAP_SQUARE", "JOIN_MITER");

    g2d.translate(3*x + 2*deltaX, 0);

    stroke = new BasicStroke(thickness,
                             BasicStroke.CAP_BUTT,
                             BasicStroke.JOIN_BEVEL);

    g2d.setStroke(stroke);

    g2d.draw(path);

    drawPoints(g2d, "CAP_BUTT", "JOIN_BEVEL");

    g2d.translate(3*x + 2*deltaX, 0);

    stroke = new BasicStroke(thickness,
                             BasicStroke.CAP_ROUND,
                             BasicStroke.JOIN_ROUND);

    g2d.setStroke(stroke);

    g2d.draw(path);

    drawPoints(g2d, "CAP_ROUND", "JOIN_ROUND");

  }



  private void drawPoints(Graphics2D g2d,String capLabel,

                          String joinLabel) {

    Paint origPaint = g2d.getPaint();

    Composite origComposite = g2d.getComposite();

    g2d.setPaint(Color.red);

    g2d.setComposite(transparentComposite);

    g2d.fill(p1Large);

    g2d.fill(p2Large);

    g2d.fill(p3Large);

    g2d.setPaint(Color.yellow);

    g2d.setComposite(origComposite);

    g2d.fill(p1Small);

    g2d.fill(p2Small);

    g2d.fill(p3Small);

    g2d.setPaint(Color.black);

    g2d.drawString(capLabel, x + thickness -5, y + 5);

    g2d.drawString(joinLabel, x + deltaX + thickness - 5, y - deltaY);

    g2d.setPaint(origPaint);

  }



  public static void main(String[] args) {

    WindowUtil.openInJFrame(new LineStyles(),
                            (int)(9*x + 6*deltaX),

                            (int)(y + 60));

  }

}



class Circle extends Ellipse2D.Double {

  public Circle(double centerX, double centerY,

                double radius) {

    super(centerX - radius, centerY - radius,

          2.0*radius, 2.0*radius);

  }

}

5.5 Stili zaključkov in medsebojnih povezav črt: Izgled izpisa

Output: line cap and join styles in Java2D

NazajNaprejKazalo

avtor: Filip Božič
december, 1998