Advertisement
TrodelHD

Untitled

Mar 14th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.32 KB | None | 0 0
  1. package Spiel;
  2.  
  3. import java.awt.BasicStroke;
  4. import java.awt.Color;
  5. import java.awt.Graphics;
  6. import java.awt.Graphics2D;
  7. import java.awt.Image;
  8. import java.awt.RenderingHints;
  9. import java.awt.event.MouseAdapter;
  10. import java.awt.event.MouseEvent;
  11. import java.awt.event.MouseMotionAdapter;
  12. import java.util.ArrayList;
  13.  
  14. import javax.swing.JComponent;
  15.  
  16.  
  17. public class DrawArea extends JComponent {
  18.  
  19. public Connection con;
  20.  
  21. public int radius;
  22. // Image in which we're going to draw
  23. private Image image;
  24. // Graphics2D object ==> used to draw on
  25. private Graphics2D g2;
  26. // Mouse coordinates
  27. private int currentX, currentY, oldX, oldY;
  28. //Send arr
  29.  
  30. public DrawArea() {
  31. ar= "";
  32. setDoubleBuffered(false);
  33. addMouseListener(new MouseAdapter() {
  34. public void mousePressed(MouseEvent e) {
  35. // save coord x,y when mouse is pressed
  36. oldX = e.getX()-20;
  37. oldY = e.getY();
  38. }
  39. });
  40.  
  41. addMouseMotionListener(new MouseMotionAdapter() {
  42. public void mouseDragged(MouseEvent e) {
  43. // coord x,y when drag mouse
  44. currentX = e.getX()-20;
  45. currentY = e.getY();
  46.  
  47. if (g2 != null) {
  48. // draw line if g2 context not null
  49. g2.setStroke(new BasicStroke(radius));
  50. g2.drawLine(oldX, oldY, currentX, currentY);
  51. //g2.drawOval(oldX, oldY, 20, 20);
  52. //g2.fillOval(currentX, currentY, radius, radius);
  53. // refresh draw area to repaint
  54. repaint();
  55. addtoArray(radius, oldX, oldY, currentX, currentY,g2.getColor().getRed(),g2.getColor().getGreen(),g2.getColor().getBlue());
  56. // store current coords x,y as olds x,y
  57. oldX = currentX;
  58. oldY = currentY;
  59. }
  60. }
  61. });
  62. AktivateSender();
  63. }
  64.  
  65. protected void paintComponent(Graphics g) {
  66. if (image == null) {
  67. // image to draw null ==> we create
  68. image = createImage(480, 560);
  69. g2 = (Graphics2D) image.getGraphics();
  70. // enable antialiasing
  71. g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
  72. // clear draw area
  73. clear();
  74. }
  75.  
  76. g.drawImage(image, 20, 0, null);
  77. }
  78.  
  79. // now we create exposed methods
  80. public void clear() {
  81. g2.setPaint(Color.white);
  82. // draw white on entire draw area to clear
  83. g2.fillRect(-20, 0, getSize().width, getSize().height);
  84. g2.setPaint(Color.black);
  85. con.serversendMessage("clear");
  86. repaint();
  87. }
  88.  
  89. public void setColor(Color c) {
  90. // apply red color on g2 context
  91. g2.setPaint(c);
  92. }
  93. private String ar;
  94. public void addtoArray(int radius,int oldX,int oldY,int currentX,int currentY,int r,int g,int b){
  95. String st = "";
  96. st=st+(radius)+" ";
  97. st=st+(oldX)+" ";
  98. st=st+(oldY)+" ";
  99. st=st+(currentX)+" ";
  100. st=st+(currentY)+" ";
  101. st=st+(r)+" ";
  102. st=st+(g)+" ";
  103. st=st+(b)+System.getProperty("line.separator");
  104. this.ar=ar+st;
  105. }
  106. private boolean run;
  107. public void AktivateSender(){
  108. run = true;
  109. Thread Sender = new Thread(){
  110. public void run(){
  111. while(run){
  112. try {sleep(60);} catch (Exception e) {}
  113. if(ar.length()!=0){
  114. con.serversendMessage(ar);
  115. ar="";
  116. }
  117. }
  118. }
  119. };
  120. Sender.start();
  121. }
  122. public void DeaktivateSender(){
  123. run= false;
  124. }
  125.  
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement