ryoakg
7/10/2016 - 9:09 AM

graphics.clj

(doto (javax.swing.JFrame.)
  (.setDefaultCloseOperation javax.swing.JFrame/DISPOSE_ON_CLOSE)
  (.setBounds 30 30 500 500)
  (-> .getContentPane
      (.add (proxy [javax.swing.JComponent] []
              (paint [^java.awt.Graphics g]
                ;; edit here
                ;; http://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html
                (doto g
                  (.setColor (java.awt.Color. 0xff9966))
                  (.drawRect 100 100 300 300)

                  (.setColor (java.awt.Color. 0xaa88cc))
                  (.drawString "foo" 200 150)

                  (.setColor (java.awt.Color. 0x8899ee))
                  (.drawOval 0 0 100 200)

                  (.setColor (java.awt.Color. 0x44dd66))
                  (.drawLine 50 10 100 200)

                  (.setColor (java.awt.Color. 0x669d77))
                  (.draw3DRect 30 30 150 280 false)

                  (.setColor (java.awt.Color. 0xff4433))
                  (.drawArc 30 40 200 100 200 100))

                (let [ps [[10 10]
                          [30 10]
                          [100 20]
                          [110 50]]]
                  (doto g
                    (.setColor (java.awt.Color. 0xff5533))
                    (.drawPolygon (int-array (map first ps))
                                  (int-array (map second ps))
                                  (count ps))))))))
  (.setVisible true))

;; examples
;; http://www.java2s.com/Tutorial/Java/0261__2D-Graphics/0320__Image.htm