Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package Spiel;
- import java.awt.BasicStroke;
- import java.awt.Color;
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import java.awt.Image;
- import java.awt.RenderingHints;
- import java.awt.event.MouseAdapter;
- import java.awt.event.MouseEvent;
- import java.awt.event.MouseMotionAdapter;
- import java.io.File;
- import java.io.IOException;
- import java.util.ArrayList;
- import javax.imageio.ImageIO;
- import javax.swing.JComponent;
- public class DrawArea extends JComponent {
- public Connection con;
- public MyPanel MyP;
- public int radius;
- // Image in which we're going to draw
- private Image image;
- // Graphics2D object ==> used to draw on
- private Graphics2D g2;
- // Mouse coordinates
- private int currentX, currentY, oldX, oldY;
- //Send arr
- private static int sceenX=0;
- private static int sceenY=0;
- private static Double sceenX100=0.0;
- private static Double sceenY100=0.0;
- private static int minusX;
- private static int minusY;
- public DrawArea(int sizeX,int sizeY) {
- minusX=sizeX;
- minusY=sizeY;
- ar= "";
- sceenX=0;
- setDoubleBuffered(false);
- addMouseListener(new MouseAdapter() {
- public void mousePressed(MouseEvent e) {
- // save coord x,y when mouse is pressed
- oldX = e.getX()-20;
- oldY = e.getY()-20;
- }
- });
- addMouseMotionListener(new MouseMotionAdapter() {
- public void mouseDragged(MouseEvent e) {
- // coord x,y when drag mouse
- currentX = e.getX()-20;
- currentY = e.getY()-20;
- if (g2 != null) {
- // draw line if g2 context not null
- g2.setStroke(new BasicStroke(radius, 1, 1));
- g2.drawLine(oldX, oldY, currentX, currentY);
- g2.setStroke(new BasicStroke(radius));
- //g2.drawOval(oldX, oldY, 20, 20);
- //g2.fillOval(currentX, currentY, radius, radius);
- // refresh draw area to repaint
- repaint();
- addtoArray(radius, oldX, oldY, currentX, currentY,g2.getColor().getRed(),g2.getColor().getGreen(),g2.getColor().getBlue());
- // store current coords x,y as olds x,y
- oldX = currentX;
- oldY = currentY;
- }
- }
- });
- AktivateSender();
- }
- protected void paintComponent(Graphics g) {
- if (image == null) {
- // image to draw null ==> we create
- image = createImage(minusX, minusY);
- //image = createImage(900, 1000);
- g2 = (Graphics2D) image.getGraphics();
- // enable antialiasing
- g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
- // clear draw area
- clear();
- }
- g.drawImage(image, 20, 20, null);
- }
- // now we create exposed methods
- public void clear() {
- g2.setPaint(Color.white);
- // draw white on entire draw area to clear
- g2.fillRect(-20, -20, getSize().width, getSize().height);
- g2.setPaint(Color.black);
- con.serversendMessage("clear");
- repaint();
- }
- public void setColor(Color c) {
- // apply red color on g2 context
- g2.setPaint(c);
- }
- private String ar;
- public void addtoArray(int radius,int oldX,int oldY,int currentX,int currentY,int r,int g,int b){
- if(sceenX==0){
- sceenX=image.getWidth(null);
- sceenX100=(100.0/(double)sceenX);
- sceenY=image.getHeight(null);
- sceenY100=(100.0/(double)sceenY);
- }
- String st = "";
- st=st+(radius)+" ";
- st=st+(oldX*sceenX100)+" ";
- st=st+(oldY*sceenY100)+" ";
- st=st+(currentX*sceenX100)+" ";
- st=st+(currentY*sceenY100)+" ";
- st=st+(r)+" ";
- st=st+(g)+" ";
- st=st+(b)+System.getProperty("line.separator");
- this.ar=ar+st;
- }
- private boolean run;
- public void AktivateSender(){
- run = true;
- Thread Sender = new Thread(){
- public void run(){
- while(run){
- try {sleep(200);} catch (Exception e) {}
- if(ar.length()!=0){
- con.serversendMessage(ar);
- ar="";
- }
- }
- }
- };
- Sender.start();
- }
- public void DeaktivateSender(){
- run= false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement