Impression d'écran avec incrustation du curseur de la souris

Aller en bas

Impression d'écran avec incrustation du curseur de la souris Empty Impression d'écran avec incrustation du curseur de la souris

Message  Gus le Mer 22 Sep - 5:37

Voici une entité qui permet de réaliser une impression d'écran en incrustant dans l'image le curseur de la souris. Cette fonctionnalité vous sera utile si vous souhaitez développer un logiciel de type Screen Recorder ....

gus.image.printscreen2

Paramétrage : vous devez mapper "icon_cursor" avec un objet de type ImageIcon qui représentera le curseur de votre souris. L'image de l'icône doit être conçue de telle manière que la pointe du curseur soit positionnée en haut à gauche de l'image. Voici quelques exemples de fichiers gif que vous pouvez utiliser :

Impression d'écran avec incrustation du curseur de la souris MOUSE_cursor Impression d'écran avec incrustation du curseur de la souris MOUSE_cursor2 Impression d'écran avec incrustation du curseur de la souris MOUSE_cursor2_transparent Impression d'écran avec incrustation du curseur de la souris MOUSE_cursor2_white Impression d'écran avec incrustation du curseur de la souris MOUSE_cursor2_black

Le code source de cette entité est donné ci-dessous :

Code:
package gus05.entity.gus.image.printscreen2;

import java.awt.Graphics;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.MouseInfo;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import gus05.framework.core.Entity;
import gus05.framework.core.Outside;
import gus05.framework.features.Provide;
import gus05.framework.features.Register;
import gus05.framework.features.Retrieve;


public class PrintScreen2 implements Entity, Provide, Register, Retrieve {

    public String getName()         {return "gus.image.printscreen2";}
    public String getCreationDate()      {return "2010.09.20";}

    public final static long REFRESH = 50;
   
   
    private ImageIcon icon_cursor;
    private Rectangle screenRect;
    private Robot robot;
   
    private long lastTime = -1;
    private BufferedImage image;
   
   
    public PrintScreen2() throws Exception
    {
       icon_cursor = (ImageIcon) Outside.resource(this,"icon_cursor");
        screenRect = getScreenRect();
        robot = new Robot();
    }
   
    public Object retrieve(String key) throws Exception
    {
       if(key.equals("icon_cursor")) return icon_cursor;
      throw new Exception("Unknown key: "+key);
   }
   
   public synchronized void register(String key, Object obj) throws Exception
   {
      if(key.equals("icon_cursor")) {icon_cursor = (ImageIcon) obj;return;}
      throw new Exception("Unknown key: "+key);
   }

    public synchronized Object provide() throws Exception
    {
       long time = System.currentTimeMillis();
       if(time>lastTime+REFRESH || image==null)
       {
          lastTime = time;
          performPrintScreen();
       }
       return image;
    }
   
    private synchronized void performPrintScreen()
    {
       image = robot.createScreenCapture(screenRect);
       if(icon_cursor==null) return;
       
       Point cursor = MouseInfo.getPointerInfo().getLocation();
       Graphics g = image.getGraphics();
       g.drawImage(icon_cursor.getImage(),cursor.x,cursor.y,null);
       g.dispose();
    }

    private Rectangle getScreenRect()
    {
       GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
       GraphicsDevice device = env.getDefaultScreenDevice();
       GraphicsConfiguration gc = device.getDefaultConfiguration();
       return gc.getBounds();
    }
}
Gus
Gus
Admin

Messages : 249
Date d'inscription : 01/09/2009

Voir le profil de l'utilisateur http://www.gus05.com

Revenir en haut Aller en bas

Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum