I am new to java and decided to create a program that: sets a point in the window when you leave a click. And one more thing when you click again. And so on ... Then it connects all the dots with lines and shades on the side of the line, depending on how many points are on the side of the line. (For example, this) 
QUESTION STARTED HERE:
Now I need one more function. When I right-click, I want the transparency of the pixel in the mouse coordinates to appear. Therefore, when a click in the middle, it will show me that it is more transparent (or darker) than when I right-click on an area of ββlight.
I did some searches, but could not find the answer. The closest I got was to create a screenshot with the robot and use it as a bufferimage, and then analyze the pixels in this way. However, it seems I am not working, since wherever I click with the right mouse button, I get 255 255,255,255 for ARGB. And sometimes weird things like 255,234,236,245 for AGBA.
Hope you can keep track of what I'm trying to do.
Here is my code.
My main class, which runs the program, creates a window and has a mouse interface:
import javax.swing.*; import java.awt.Dimension; import java.awt.Rectangle; import java.awt.Robot; import java.awt.event.*; import java.awt.image.BufferedImage; public class mouse { static DataTransfer data = new DataTransfer(); private static int x,y ; private static draw object = new draw(); public static int numPoints = 0; public static final int maxPoints = 4; public static void main(String[] args) throws Exception { JFrame frame = new JFrame(); Robot robot = new Robot(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setTitle("Drawing"); frame.setSize(500, 400 ); frame.setLocationRelativeTo(null); frame.setVisible(true); frame.add(object); data.getRobot(robot,frame.getSize()); object.addMouseListener(new AL() ); } public static class AL extends MouseAdapter { public void mouseClicked( MouseEvent e){ if (e.getButton() == MouseEvent.BUTTON1) { if (numPoints < maxPoints){ x = e.getX(); y = e.getY(); object.drawing(x,y,numPoints); System.out.println("NUMBRER"+numPoints); numPoints++; } } if (e.getButton() == MouseEvent.BUTTON3) { x = e.getX(); y = e.getY(); int pixel = data.getScreen().getRGB(x, y); int alpha = (pixel >> 24) & 0xff; int red = (pixel >> 16) & 0xff; int green = (pixel >> 8) & 0xff; int blue = (pixel) & 0xff; System.out.println("argb: " + alpha + ", " + red + ", " + green + ", " + blue); } } }
And my Graphics class, which deals with hatching and line drawing, etc. (most of them are repeated for each case of shading, so you do not need to read all of this)
import java.awt.Color; import java.awt.Graphics; import javax.swing.JPanel; @SuppressWarnings("serial") public class draw extends JPanel { int[] polX = new int[5]; int[] polY = new int[5]; int[] aX = new int[mouse.maxPoints]; int[] aY = new int[mouse.maxPoints]; float m, c; int corners; //float triAng = 30; float triAng = 255/(((mouse.maxPoints)*(mouse.maxPoints + 1))/2); public void drawing( int xx, int yy, int Number ) { aX[Number] = xx; aY[Number] = yy; repaint(); } public void paintComponent(Graphics g){ super.paintComponent(g); g.setColor(new Color(0,255,0,255)); g.setColor(new Color(255,0,0,(int)triAng )); for(int i=0; i<mouse.numPoints;i++){ for( int j = i+1; j < mouse.numPoints; j++) { // Shading the area //1) finding the equation of the line if( aX[i] != aX[j]){ if( aY[i] != aY[j]){ //Work out the Gradient m = (float)(aY[j] - aY[i] ) /(aX[j] - aX[i]); c = ((float)aY[i]-(((float)aX[i])*m)); for(int k=0;k<mouse.numPoints;k++){ if(m<0){ //Gradient is negative if(k!= i && k!=j){ //Below if( aX[k]*m+c < aY[k]){ //Clockwise from origin // Left Right // N - no additional corner // Y- Additional Corner // NN if( ( c >= 400) && (500*m+c) >= 0) { polX[1] = (int)((400-c)/m); polY[1] = 400; polX[2] = 500; polY[2] = (int)(500*m+c); corners = 3; } // NY else if( c >= 400 && (500*m+c) < 0) { polX[1] = (int)((400-c)/m); polY[1] = 400; polX[2] = (int)((0-c)/m); polY[2] = 0; polX[3] = 500; polY[3] = 0; corners = 4; } // YN else if( c < 400 && (500*m+c) >= 0) { polX[1] = 0; polY[1] = 400; polX[2] = 0; polY[2] = (int)c; polX[3] = 500; polY[3] = (int)(500*m+c); corners = 4; } // YY else if( c < 400 && (500*m+c) < 0){ polX[1] = 0; polY[1] = 400; polX[2] = 0; polY[2] = (int)c; polX[3] = (int)((0-c)/m); polY[3] = 0; polX[4] = 500; polY[4] = 0; corners = 5; } //Origin corners polX[0] = 500; polY[0] = 400; g.fillPolygon(polX, polY, corners); } //I am here ///////////////Above if( aX[k]*m+c > aY[k]){ //Clockwise from origin // Left Right // N - no additional corner // Y- Additional Corner // NN if( ( c <= 400) && (500*m+c) <= 0) { polX[1] = (int)((0-c)/m); polY[1] = 0; polX[2] = 0; polY[2] = (int)(c); corners = 3; } // NY else if( c <= 400 && (500*m+c) > 0) { polX[1] = 500; polY[1] = 0; polX[2] = 500; polY[2] = (int)(500*m+c); polX[3] = 0; polY[3] = (int)c; corners = 4; } // YN else if( c > 400 && (500*m+c) <= 0) { polX[1] = (int)((0-c)/m); polY[1] = 0; polX[2] = (int)((400-c)/m); polY[2] = 400; polX[3] = 0; polY[3] = 400; corners = 4; } // YY else if( c > 400 && (500*m+c) > 0){ polX[1] = 500; polY[1] = 0; polX[2] = 500; polY[2] = (int)(500*m+c); polX[3] = (int)((400-c)/m); polY[3] = 400; polX[4] = 0; polY[4] = 400; corners = 5; } //Origin corners polX[0] = 0; polY[0] = 0; g.fillPolygon(polX, polY, corners); } } } /////////////////////////////////////////////////////////////////////////////////////////////// if(m>0){ //Gradient is Positive if(k!= i && k!=j){ //Below if( aX[k]*m+c < aY[k]){ //Clockwise from origin // Left Right // N - no additional corner // Y- Additional Corner // NN if( ( c >= 0 ) && (500*m+c) >= 400) { polX[1] = 0; polY[1] = (int)c; polX[2] = (int)((400-c)/m); polY[2] = 400; corners = 3; } // NY else if( c >= 0 && (500*m+c) < 400) { polX[1] = 0; polY[1] = (int)c; polX[2] = 500; polY[2] = (int)(500*m+c); polX[3] = 500; polY[3] = 400; corners = 4; } // YN else if( c < 0 && (500*m+c) >= 400) { polX[1] = 0; polY[1] = 0; polX[2] = (int)((0-c)/m); polY[2] = 0; polX[3] = (int)((400-c)/m); polY[3] = 400; corners = 4; } // YY else if( c < 0 && (500*m+c) < 400){ polX[1] = 0; polY[1] = 0; polX[2] = (int)((0-c)/m); polY[2] = 0; polX[3] = 500; polY[3] = (int)(500*m+c); polX[4] = 500; polY[4] = 400; corners = 5; } //Origin corners polX[0] = 0; polY[0] = 400; g.fillPolygon(polX, polY, corners); } ///////////////Above if( aX[k]*m+c > aY[k]){ //Clockwise from origin // Left Right // N - no additional corner // Y- Additional Corner // NN if( ( c <= 0) && (500*m+c) <= 400) { polX[1] = 500; polY[1] = (int)(500*m+c); polX[2] = (int)((0-c)/m); polY[2] = 0; corners = 3; } // NY else if( c <= 0 && (500*m+c) > 400) { polX[1] = 500; polY[1] = 400; polX[2] = (int)((400-c)/m); polY[2] = 400; polX[3] = (int)((0-c)/m); polY[3] = 0; corners = 4; } // YN else if( c > 0 && (500*m+c) <= 400) { polX[1] = 500; polY[1] = (int)(500*m+c); polX[2] = 0; polY[2] = (int)c; polX[3] = 0; polY[3] = 0; corners = 4; } // YY else if( c > 0 && (500*m+c) > 40){ polX[1] = 500; polY[1] = 400; polX[2] = (int)((400-c)/m); polY[2] = 400; polX[3] = 0; polY[3] = (int)c; polX[4] = 0; polY[4] = 0; corners = 5; } //Origin corners polX[0] = 500; polY[0] = 0; g.fillPolygon(polX, polY, corners); } } } } } else{ //code for horizontal line } } else{ //Vertical } } } g.setColor(new Color(0,255,0,255)); for(int i=0; i<mouse.numPoints; i++){ g.fillOval(aX[i] - 10,aY[i]-10,20,20); } // Drawing The Line ////// for(int i=0; i<mouse.numPoints;i++){ for( int j = i+1; j < mouse.numPoints; j++){ g.setColor(new Color(0,255,0,255)); g.drawLine(aX[i], aY[i], aX[j], aY[j]); g.setColor(new Color(255,0,0,(int)triAng)); } } } }