| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 
 | import java.awt.AWTException;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.RenderingHints;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.image.BufferedImage;
import java.text.DecimalFormat;
import java.text.NumberFormat;
 
import javax.swing.*;
 
@SuppressWarnings("serial")
public class RegleEcran extends JFrame implements MouseMotionListener, MouseListener {
	private int x, y, x_start_point, y_start_point;
	private NumberFormat nf = new DecimalFormat("#.00");
	private final static Font LEGENDE = new Font("Sans Serif, Helvetica, Arial", Font.ROMAN_BASELINE, 10);
	private BufferedImage image=null;
 
	public RegleEcran () {
		x_start_point=-1;
		y_start_point=-1;
 
		addMouseMotionListener(this);
		addMouseListener(this);
		setUndecorated(true);
	}
 
	public void setImage(BufferedImage image){
		this.image = image;
	}
 
	@Override
	public void paint(Graphics g) {
		super.paint(g);
 
		Graphics2D g2d = (Graphics2D)g;
		g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
 
		if(image!= null){
			g2d.drawImage(image, 0, 0, this);
		}
 
		if(x_start_point!=-1){
			// ligne
			g2d.setColor(Color.RED);
			g2d.drawLine(x_start_point, y_start_point, x, y);
 
			// croix
			g2d.setColor(Color.WHITE);
			g2d.setStroke(new BasicStroke(3));
			g2d.drawLine(x_start_point, y_start_point-3, x_start_point, y_start_point+3);
			g2d.drawLine(x_start_point-3, y_start_point, x_start_point+3, y_start_point);
			g2d.drawLine(x, y-3, x, y+3);
			g2d.drawLine(x-3, y, x+3, y);
 
			g2d.setColor(Color.BLACK);
			g2d.setStroke(new BasicStroke(1));
			g2d.drawLine(x_start_point, y_start_point-3, x_start_point, y_start_point+3);
			g2d.drawLine(x_start_point-3, y_start_point, x_start_point+3, y_start_point);
			g2d.drawLine(x, y-3, x, y+3);
			g2d.drawLine(x-3, y, x+3, y);
 
			// legendes
			g2d.setColor(new Color(127,127,127,127));
			g2d.fillRect(x_start_point-60, y_start_point, 50, 35);
			g2d.fillRect(x+10, y, 72, 95);
 
			g2d.setColor(Color.BLACK);
			g2d.setFont(LEGENDE);
 
			g2d.drawString("x : " + (x_start_point), x_start_point-55, y_start_point+15);
			g2d.drawString("y : " + (y_start_point), x_start_point-55, y_start_point+27);
 
			g2d.drawString("x : " + (x), x+15, y+15);
			g2d.drawString("y : " + (y), x+15, y+27);
 
			g2d.drawString("h : " + (x - x_start_point), x+15, y+45);
			g2d.drawString("v : " + (y - y_start_point), x+15, y+57);
 
			g2d.drawString("° : " + nf.format(-(Math.toDegrees(Math.atan2(y-y_start_point , x-x_start_point)))), x+15, y+75);			
			g2d.drawString("d : " + nf.format((Math.sqrt(Math.pow((x - x_start_point),2)+Math.pow((y - y_start_point),2)))), x+15, y+87);
		}
	}
 
	// Listeners
	public void mouseDragged(MouseEvent e) {
		x = e.getX();
		y = e.getY();
		repaint();
	}
 
	public void mouseMoved(MouseEvent e) {}
 
	public void mouseClicked(MouseEvent e) {}
 
	public void mouseEntered(MouseEvent e) {}
 
	public void mouseExited(MouseEvent e) {}
 
	public void mousePressed(MouseEvent e) {
		x_start_point=e.getX();
		y_start_point=e.getY();
		x = e.getX();
		y = e.getY();
		repaint();		
	}
 
	public void mouseReleased(MouseEvent e) {}
 
	// Main
	public static void main(String[] args) throws AWTException {
		RegleEcran frame = new RegleEcran();
 
		Toolkit leKit = frame.getToolkit();
		Dimension tailleFenetre = leKit.getScreenSize();
 
		Rectangle screenRect = new Rectangle(tailleFenetre);
		//creer le screenshot
		Robot robot = new Robot();
		BufferedImage image = robot.createScreenCapture(screenRect);
 
		frame.setImage(image);
		frame.setBounds(0, 0, tailleFenetre.width, tailleFenetre.height);
		frame.setVisible(true);
		Cursor main = new Cursor(Cursor.CROSSHAIR_CURSOR);
		frame.setCursor(main);
 
	}
} | 
Partager