public void paint(Graphics g) { Graphics2D g_2d = (Graphics2D) g; Ellipse2D ellipse = new Ellipse2D.Double(0, 2, 80, 80); Rectangle2D rect = new Rectangle2D.Double(40, 2, 80, 80); Area a1 = new Area(ellipse); Area a2 = new Area(rect); a1.intersect(a2); // "Óë" g_2d.fill(a1); ellipse.setFrame(130, 2, 80, 80); rect.setFrame(170, 2, 80, 80); a1 = new Area(ellipse); a2 = new Area(rect); a1.add(a2); // "»ò" g_2d.draw(a1); ellipse.setFrame(0, 90, 80, 80); rect.setFrame(40, 90, 80, 80); a1 = new Area(ellipse); a2 = new Area(rect); a1.subtract(a2); // "²î" g_2d.draw(a1); ellipse.setFrame(130, 90, 80, 80); rect.setFrame(170, 90, 80, 80); a1 = new Area(ellipse); a2 = new Area(rect); a1.exclusiveOr(a2); // "Òì»ò" g_2d.fill(a1); }
private static final Shape createMask(int width, int height) { Shape outside = new Rectangle2D.Double(0, 0, width, height); Shape inside = new RoundRectangle2D.Double(10, 10, width - 20, height - 20, 50, 50); Area area = new Area(outside); area.subtract(new Area(inside)); return area; }
private void paintGenome(Graphics2D g) { g.setColor(Color.WHITE); g.fillRect(0, 0, viewRect.width, viewRect.height); g.setColor(new Color(0.9f, 0.9f, 1f)); g.fill( new Ellipse2D.Double( context.getCenterX() - getRadiusInt(), context.getCenterY() - getRadiusInt(), getRadiusInt() * 2, getRadiusInt() * 2)); for (int i = 0; i < this.context.getDictionary().getSequences().size(); ++i) { SAMSequenceRecord rec = this.context.getDictionary().getSequence(i); Arc2D outer = context.getArc(rec, 0, rec.getSequenceLength(), getRadiusExt(), Arc2D.PIE); if (outer.getAngleExtent() == 0) continue; Area area = new Area(outer); Ellipse2D.Double ed = new Ellipse2D.Double( context.getCenter().getX() - getRadiusInt(), context.getCenter().getY() - getRadiusInt(), getRadiusInt() * 2, getRadiusInt() * 2); area.subtract(new Area(ed)); g.setColor(i % 2 == 0 ? Color.LIGHT_GRAY : Color.WHITE); g.fill(area); g.setColor(Color.BLACK); g.draw(area); if ((rec.getSequenceLength() / (double) this.context.getDictionary().getReferenceLength()) < 0.01) continue; String title = rec.getSequenceName(); double midangle = context.convertPositionToRadian(rec, rec.getSequenceLength() / 2); AffineTransform old = g.getTransform(); AffineTransform tr = new AffineTransform(old); g.translate(context.getCenterX(), context.getCenterY()); g.rotate(midangle); g.translate(getRadiusExt(), 0); g.drawString(title, 0, 0); g.setTransform(tr); g.setTransform(old); } }
public void paint(Graphics2D g) { g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g.setPaint(Color.black); // Rectangle g.drawString("Rectangle", 10, 20); Rectangle rect = new Rectangle(10, 30, 50, 40); g.draw(rect); g.translate(0, 90); // Round Rectangle g.drawString("RoundRectangle", 10, 20); RoundRectangle2D roundRect = new RoundRectangle2D.Double(10, 30, 50, 40, 10, 10); g.draw(roundRect); g.translate(0, 90); // Circle g.drawString("Circle", 10, 20); Ellipse2D circle = new Ellipse2D.Float(10, 30, 50, 50); g.draw(circle); g.translate(0, 90); // CubicCurve2D g.drawString("CubicCurve2D", 10, 20); CubicCurve2D curve = new CubicCurve2D.Float(10, 55, 22.5f, 00, 38.5f, 110, 60, 55); g.draw(curve); g.translate(150, -270); // Polygon g.drawString("Polygon", 10, 20); Polygon polygon = new Polygon(new int[] {30, 50, 10}, new int[] {30, 60, 60}, 3); g.draw(polygon); g.translate(0, 90); // General Path g.drawString("GeneralPath", 10, 20); GeneralPath path = new GeneralPath(); path.moveTo(30, 30); path.quadTo(30, 50, 50, 60); path.quadTo(30, 50, 10, 60); path.quadTo(30, 50, 30, 30); path.closePath(); g.draw(path); g.translate(0, 90); // Area g.drawString("Area", 10, 20); Area area = new Area(new Rectangle(10, 30, 50, 50)); area.subtract(new Area(new Ellipse2D.Double(12, 32, 46, 46))); g.fill(area); g.translate(0, 90); // QuadCurve 2D g.drawString("QuadCurve2D", 10, 20); QuadCurve2D quad = new QuadCurve2D.Float(10, 55, 35, 105, 60, 55); g.draw(quad); g.translate(-75, 70); // Line g.drawString("Line2D", 10, 20); g.draw(new Line2D.Float(10, 30, 60, 30)); }