Advertisement
Guest User

Untitled

a guest
Oct 28th, 2016
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.67 KB | None | 0 0
  1. package draw;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Graphics;
  5. import java.awt.Graphics2D;
  6. import java.awt.Image;
  7. import java.awt.RenderingHints;
  8. import java.awt.Shape;
  9. import java.awt.event.MouseAdapter;
  10. import java.awt.event.MouseEvent;
  11. import java.awt.event.MouseListener;
  12. import java.awt.event.MouseMotionAdapter;
  13. import java.awt.event.MouseMotionListener;
  14.  
  15. import javax.swing.JComponent;
  16. import javax.swing.JOptionPane;
  17. import java.awt.geom.*;
  18. import java.util.LinkedList;
  19.  
  20. public class DrawArea extends JComponent {
  21. // image you are going to draw
  22. private Image image;
  23. // you are going to draw on
  24. private Graphics2D g2;
  25. // co-ordinates of mouse
  26. private int oldX, oldY, newX, newY;
  27. // alist to store the shapes
  28. LinkedList<Shape> shapeList = new LinkedList<>();
  29. Rectangle2D.Float selector = new Rectangle2D.Float();
  30. MouseListener drawcircle = new MouseAdapter() {
  31. public void mouseClicked(MouseEvent e) {
  32. oldX = e.getX();
  33. oldY = e.getY();
  34. String fn = JOptionPane.showInputDialog("Enter diameter of circle");
  35. int diameter = Integer.parseInt(fn);
  36. Ellipse2D.Float circle = new Ellipse2D.Float(oldX - diameter / 2, oldY - diameter / 2, diameter, diameter);
  37. g2.draw(circle);
  38. shapeList.add(circle);
  39. repaint();
  40. }
  41. };
  42. MouseListener drawRectangle = new MouseAdapter() {
  43. public void mouseClicked(MouseEvent e) {
  44. oldX = e.getX();
  45. oldY = e.getY();
  46. String fn = JOptionPane.showInputDialog("Enter Width of rectangle");
  47. String sn = JOptionPane.showInputDialog("Enter height of rectangle");
  48. int width = Integer.parseInt(fn);
  49. int height = Integer.parseInt(sn);
  50. Rectangle2D.Float rect = new Rectangle2D.Float(oldX - (width / 2), oldY - (height / 2), width, height);
  51. g2.draw(rect);
  52. shapeList.add(rect);
  53. repaint();
  54. }
  55. };
  56. MouseListener drawSquare = new MouseAdapter() {
  57. public void mouseClicked(MouseEvent e) {
  58. oldX = e.getX();
  59. oldY = e.getY();
  60. String fn = JOptionPane.showInputDialog("Enter the dimension of square");
  61. int dimension = Integer.parseInt(fn);
  62. Rectangle2D.Float square = new Rectangle2D.Float(oldX - (dimension / 2), oldY - (dimension / 2), dimension,
  63. dimension);
  64. g2.draw(square);
  65. shapeList.add(square);
  66. repaint();
  67. }
  68. };
  69. MouseListener drawPoint = new MouseAdapter() {
  70. public void mouseClicked(MouseEvent e) {
  71. oldX = e.getX();
  72. oldY = e.getY();
  73. g2.drawLine(oldX, oldY, oldX + 1, oldY + 1);
  74. repaint();
  75. }
  76. };
  77. MouseMotionListener drawFree = new MouseAdapter() {
  78. public void mouseDragged(MouseEvent e) {
  79. newX = e.getX();
  80. newY = e.getY();
  81. if (g2 != null) {
  82. g2.drawLine(oldX, oldY, newX, newY);
  83. // refresh the view
  84. repaint();
  85. oldX = newX;
  86. oldY = newY;
  87. }
  88. }
  89. };
  90. MouseListener changeColor = new MouseAdapter() {
  91. public void mouseClicked(MouseEvent e) {
  92. int colouringArea = 0;
  93. selector.height = Float.MAX_VALUE;
  94. boolean found = false;
  95. for (int i = 0; i < shapeList.size(); i++) {
  96. if (shapeList.get(i).contains(e.getX(), e.getY())) {
  97. if (selector.getHeight() > shapeList.get(i).getBounds2D().getHeight()) {
  98. selector = (Rectangle2D.Float) shapeList.get(i).getBounds2D();
  99. colouringArea = i;
  100. found = true;
  101. }
  102. }
  103. }
  104. if (found == true) {
  105. Area first = new Area(shapeList.get(colouringArea));
  106. for (int i = 0; i < shapeList.size(); i++) {
  107. if (colouringArea != i && shapeList.get(i).contains(e.getX(), e.getY()) == false) {
  108. Area second = new Area(shapeList.get(i));
  109. first.subtract(second);
  110.  
  111. } else if (colouringArea != i && shapeList.get(i).contains(e.getX(), e.getY()) == true
  112. && ((Rectangle2D.Float) shapeList.get(i).getBounds2D()).contains(
  113. (Rectangle2D.Float) shapeList.get(colouringArea).getBounds2D()) == false) {
  114. Area second = new Area(shapeList.get(i));
  115. first.intersect(second);
  116. }
  117. }
  118. g2.fill(first);
  119. repaint();
  120. }
  121. }
  122. };
  123.  
  124. public DrawArea() {
  125. // decide whether you use a buffer to draw or not
  126. setDoubleBuffered(false);
  127. addMouseListener(drawPoint);
  128. addMouseMotionListener(drawFree);
  129. addMouseListener(new MouseAdapter() {
  130. public void mousePressed(MouseEvent e) {
  131. oldX = e.getX();
  132. oldY = e.getY();
  133. }
  134.  
  135. });
  136.  
  137. }
  138. // it is automatically called when we call repaint()
  139.  
  140. protected void paintComponent(Graphics g) {
  141. // TODO Auto-generated method stub
  142. if (image == null) {
  143. // create dimensions of the image
  144. image = createImage(getSize().width, getSize().height);
  145. // g2 draw on image
  146. g2 = (Graphics2D) image.getGraphics();
  147. g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
  148. // clear
  149. clear();
  150. }
  151. // here we draw image to draw on
  152. g.drawImage(image, 0, 0, null);
  153. }
  154.  
  155. private void clear() {
  156. // choose a colour for paint
  157. g2.setPaint(Color.white);
  158. g2.fillRect(0, 0, getSize().width, getSize().height);
  159. g2.setPaint(Color.black);
  160. repaint();
  161.  
  162. }
  163.  
  164. public void Blue() {
  165. g2.setPaint(Color.blue);
  166. }
  167.  
  168. public void red() {
  169. g2.setPaint(Color.red);
  170. }
  171.  
  172. public void yellow() {
  173. g2.setPaint(Color.yellow);
  174. }
  175.  
  176. public void black() {
  177. g2.setPaint(Color.black);
  178. }
  179.  
  180. public void drawRect() {
  181. removeMouseListener(changeColor);
  182. removeMouseListener(drawSquare);
  183. removeMouseListener(drawRectangle);
  184. addMouseListener(drawRectangle);
  185. removeMouseListener(drawPoint);
  186. removeMouseMotionListener(drawFree);
  187. removeMouseListener(drawcircle);
  188. }
  189.  
  190. public void freeDrawing() {
  191. removeMouseListener(changeColor);
  192. removeMouseListener(drawSquare);
  193. removeMouseListener(drawPoint);
  194. removeMouseListener(drawRectangle);
  195. removeMouseListener(drawcircle);
  196. removeMouseMotionListener(drawFree);
  197. addMouseListener(drawPoint);
  198. addMouseMotionListener(drawFree);
  199. }
  200.  
  201. public void drawCircle() {
  202. removeMouseListener(changeColor);
  203. removeMouseListener(drawSquare);
  204. removeMouseListener(drawcircle);
  205. addMouseListener(drawcircle);
  206. removeMouseListener(drawRectangle);
  207. removeMouseListener(drawPoint);
  208. removeMouseMotionListener(drawFree);
  209. }
  210.  
  211. public void drawsquare() {
  212. removeMouseListener(changeColor);
  213. removeMouseListener(drawSquare);
  214. removeMouseListener(drawcircle);
  215. addMouseListener(drawSquare);
  216. removeMouseListener(drawRectangle);
  217. removeMouseListener(drawPoint);
  218. removeMouseMotionListener(drawFree);
  219. }
  220.  
  221. public void changeColor() {
  222. removeMouseListener(changeColor);
  223. addMouseListener(changeColor);
  224. removeMouseListener(drawSquare);
  225. removeMouseListener(drawcircle);
  226. removeMouseListener(drawSquare);
  227. removeMouseListener(drawRectangle);
  228. removeMouseListener(drawPoint);
  229. removeMouseMotionListener(drawFree);
  230. }
  231. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement