Last active
October 11, 2015 00:48
[Processing 2.0] Create Transparent Window [Java, Frame]
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Author: Tim Pulver | |
* Date: 2013 | |
* Tested with Processing 2.0 | |
* original code by jungalero (processing.org forum) | |
*/ | |
import java.awt.AWTException; | |
import java.awt.Robot; | |
import java.awt.Rectangle; | |
import java.awt.image.BufferedImage; | |
import java.awt.GraphicsEnvironment; | |
import java.awt.GraphicsDevice; | |
import java.awt.DisplayMode; | |
PImage screenShot; | |
int W = 400; // width | |
int H = 400; // height | |
int X = 0; // x-position of the window | |
int Y = 0; // y-position of the window | |
int XOFF = 0; // x-offset = distance to the right screen boarder | |
int YOFF = 100; // y-offset = distance to the top screen boarder | |
void setup() { | |
// if the window should be fullscreen uncomment this | |
//W = displayWidth; | |
//H = displayHeight; | |
size(W, H); | |
screenShot = getScreen(X, Y, W, H); | |
initFrame(); | |
} | |
/** | |
* Removes the windowboarder | |
*/ | |
void initFrame(){ | |
frame.removeNotify(); | |
frame.setUndecorated(true); | |
frame.addNotify(); | |
} | |
void draw () { | |
frame.setLocation(X, Y); | |
image(screenShot,0,0, width, height); | |
// draw something to see the window | |
fill(0); | |
ellipse(width/2, height/2, 200, 200); | |
} | |
/** | |
* Returns an image of the screen (full) | |
*/ | |
PImage getFullscreen(){ | |
return getScreen(0, 0, displayWidth, displayHeight); | |
} | |
/** | |
* Returns an area of the screen (screenshot) | |
* @param x Top-Left corner of the area to copy (x) | |
* @param y Top Left corner of the area to copy (y) | |
* @param w Width of the rectangle | |
* @param h Height of the rectangle | |
*/ | |
PImage getScreen(int x, int y, int w, int h) { | |
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); | |
GraphicsDevice[] gs = ge.getScreenDevices(); | |
DisplayMode mode = gs[0].getDisplayMode(); | |
Rectangle bounds = new Rectangle(x, y, w, h); | |
BufferedImage desktop = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB); | |
try { | |
desktop = new Robot(gs[0]).createScreenCapture(bounds); | |
} | |
catch(AWTException e) { | |
System.err.println("Screen capture failed."); | |
} | |
return (new PImage(desktop)); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment