Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import javax.swing.*;
- import java.awt.*;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.awt.geom.Area;
- import java.awt.geom.RoundRectangle2D;
- import java.awt.image.BufferedImage;
- public class MagnifierPanel extends JPanel {
- private Image screenImage;
- private BufferedImage img;
- private int magnifierSize;
- private int position_X;
- private int position_Y;
- private Area rectangleFrame;
- public Area rectanglePanel;
- private Color frameColor;
- private Color panelColor;
- /* class for taking picture of the screen */
- private Robot robot;
- public MagnifierPanel(int magnifierSize){
- try{
- robot = new Robot();
- } catch (AWTException e){}
- getScreen();
- }
- public void setMagnifierPosition(int position_X, int position_Y){
- this.position_X = position_X;
- this.position_Y = position_Y;
- updateMagnifierPicture();
- }
- public void setImage(Image screenImage){
- this.screenImage = screenImage;
- updateMagnifierPicture();
- }
- /* take picture of the current screen setup */
- public void getScreen() {
- screenImage = robot.createScreenCapture(new Rectangle(0,
- 0,
- Toolkit.getDefaultToolkit().getScreenSize().width,
- Toolkit.getDefaultToolkit().getScreenSize().height)
- );
- }
- /* set the size and color of the magnifier tool */
- public void setMagnifierSize(int magnifierSize){
- this.magnifierSize = magnifierSize;
- rectangleFrame = new Area(new Rectangle(0, 0, magnifierSize, magnifierSize));
- rectanglePanel = new Area(new RoundRectangle2D.Double(10, 10, magnifierSize - 20, magnifierSize - 20, 30, 30));
- rectangleFrame.subtract(rectanglePanel);
- frameColor = new Color(8, 0, 151, 178);
- panelColor = new Color(0, 248, 251, 46);
- /* set default size for this component */
- setPreferredSize(new Dimension(magnifierSize,magnifierSize));
- if (getParent() != null){
- getParent().repaint();
- }
- updateMagnifierPicture();
- }
- public void updateMagnifierPicture(){
- if (getParent() != null){
- getParent().repaint();
- } else {
- repaint();
- }
- }
- public void paintComponent(Graphics g){
- super.paintComponent((Graphics2D)g);
- drawMagnifier((Graphics2D)g);
- }
- public void drawMagnifier(Graphics2D g){
- g.setClip(rectangleFrame);
- g.drawImage(screenImage,
- 0,
- 0,
- magnifierSize,
- magnifierSize,
- position_X,
- position_Y,
- position_X + magnifierSize,
- position_Y + magnifierSize,
- this);
- g.setColor(frameColor);
- g.fill(rectangleFrame);
- // clip the inner rectangle, so the zoom is applied only to it
- g.setClip(rectanglePanel);
- g.drawImage(screenImage,
- 0,
- 0,
- magnifierSize,
- magnifierSize,
- position_X + (magnifierSize/4),
- position_Y + (magnifierSize/4),
- position_X + (magnifierSize/4*3), // set the magnifier zoom
- position_Y + (magnifierSize/4*3), // set the magnifier zoom
- this);
- g.setColor(panelColor);
- g.fill(rectanglePanel);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement