Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import javax.swing.*;
- import java.awt.*;
- import java.awt.geom.*;
- import java.util.*;
- import java.util.List;
- /**
- * This class has been automatically generated using
- * <a href="http://ebourg.github.io/flamingo-svg-transcoder/">Flamingo SVG transcoder</a>.
- */
- public class Main {
- public static void main(String[] args) {
- JFrame frame = buildFrame();
- JPanel pane = new JPanel() {
- @Override
- protected void paintComponent(Graphics g) {
- super.paintComponent(g);
- drawPlantInPot((Graphics2D) g);
- }
- };
- frame.add(pane);
- }
- private static JFrame buildFrame() {
- JFrame frame = new JFrame();
- frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
- frame.setSize(200, 200);
- frame.setVisible(true);
- return frame;
- }
- public static void paintTeddy(Graphics2D g) {
- g.transform(new AffineTransform(3, 0, 0, 3, 0, 0));
- // Ноги
- drawEllipse(g,71, 155, 33, 17);
- drawEllipse(g,113, 155, 33, 17);
- // Тело
- drawEllipse(g,77, 106, 65, 59);
- // Голова
- drawEllipse(g,83, 67, 52, 47);
- // Уши
- drawEllipse(g,80, 60, 17, 15);
- drawEllipse(g,120, 60, 17, 15);
- // Глаза
- drawEllipse(g,98, 79, 5, 5);
- drawEllipse(g,113, 79, 5, 5);
- // Нос
- drawEllipse(g,100, 88, 16, 14);
- drawEllipse(g,106, 91, 4, 4);
- // Руки
- drawEllipse(g,65, 110, 28, 25);
- drawEllipse(g,125, 110, 28, 25);
- }
- public static void drawPlantInPot(Graphics2D g) {
- Deque<AffineTransform> transformations = new LinkedList<>();
- transformations.push(g.getTransform());
- g.transform(new AffineTransform(3f, 0, 0, 3, 0, 0));
- drawLine(g, new Point2D.Double(86, 165), new ArrayList<Point2D.Double>() {{
- add(new Point2D.Double(122, 165));
- add(new Point2D.Double(114, 192));
- add(new Point2D.Double(94, 192));
- }});
- transformations.push(g.getTransform());
- g.transform(new AffineTransform(1, 0, 0, 1, -6.047619f, 11.339286f));
- GeneralPath curve = new GeneralPath();
- curve.moveTo(108.47917, 153.74702);
- curve.curveTo(116.20165, 145.97331, 119.71869, 134.24982, 117.55059, 123.508934);
- curve.curveTo(116.209, 116.86263, 112.79286, 110.6505, 107.89893, 105.95769);
- curve.curveTo(103.00499, 101.26487, 96.65505, 98.11227, 89.958336, 97.0506);
- g.setPaint(Color.BLACK);
- g.setStroke(new BasicStroke(1));
- g.draw(curve);
- // Листки
- affineTransform(transformations, g,0.88202477f, -0.47120312f, 0.5293596f, 0.84839755f, 0, 0);
- drawEllipse(g, 16.53533172607422, 181.1499786376953, 22.840898513793945, 5.799976825714111);
- affineTransform(transformations, g,0.9568766f, 0.29049474f, -0.22559392f, 0.9742214f, 0, 0);
- drawEllipse(g, 118.76726531982422, 106.97824096679688, 22.840898513793945, 5.799976825714111);
- // Лепестки
- affineTransform(transformations, g,1, 0, 0, 1, 0, 0);
- drawEllipse(g, 82, 77, 7, 29);
- affineTransform(transformations, g,0.7, -0.713, 0.7, 0.713, 0, 0);
- drawEllipse(g, -19, 137, 6, 27);
- affineTransform(transformations, g,0.713, 0.7, -0.713, 0.7, 0, 0);
- drawEllipse(g, 133, 19, 6, 27);
- affineTransform(transformations, g,0.713, 0.7, -0.713, 0.7, 0, 0);
- drawEllipse(g, 134, -9, 6, 27);
- affineTransform(transformations, g, 0.7, -0.7, 0.7, 0.72, 0, 0);
- drawEllipse(g, -18, 107, 6, 27);
- g.setTransform(transformations.pop());
- g.setTransform(transformations.pop());
- }
- private static void drawLine(Graphics2D g, Point2D.Double start, List<Point2D.Double> coords) {
- GeneralPath line = new GeneralPath();
- line.moveTo(start.getX(), start.getY());
- coords.forEach(point -> line.lineTo(point.getX(), point.getY()));
- line.closePath();
- g.setPaint(Color.WHITE);
- g.fill(line);
- g.setPaint(Color.BLACK);
- g.setStroke(new BasicStroke(1));
- g.draw(line);
- }
- private static void drawEllipse(Graphics2D g, double x, double y, double width, double height) {
- Shape shape = new Ellipse2D.Double(x, y, width, height);
- g.setPaint(Color.WHITE);
- g.fill(shape);
- g.setPaint(Color.BLACK);
- g.setStroke(new BasicStroke(1));
- g.draw(shape);
- }
- private static void affineTransform(Deque<AffineTransform> transforms, Graphics2D g,
- double scaleX, double shearY,
- double shearX, double scaleY,
- double translateX, double translateY) {
- g.setTransform(transforms.pop());
- transforms.push(g.getTransform());
- g.transform(new AffineTransform(scaleX, shearY, shearX, scaleY, translateX, translateY));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement