public StdImage getImage() {
		StdImage offscreen = null;
		synchronized (getTreeLock()) {
			Graphics2D gc = null;
			try {
				Rectangle bounds = getVisibleRect();
				offscreen = StdImage.createTransparent(getGraphicsConfiguration(), bounds.width, bounds.height);
				gc = offscreen.getGraphics();
				Color saved = gc.getBackground();
				gc.setBackground(new Color(0, true));
				gc.clearRect(0, 0, bounds.width, bounds.height);
				gc.setBackground(saved);
				Rectangle clip = new Rectangle(0, 0, bounds.width, bounds.height);
				gc.setClip(clip);
				gc.translate(-bounds.x, -bounds.y);
				paint(gc);
			} catch (Exception exception) {
				Log.error(exception);
			} finally {
				if (gc != null) {
					gc.dispose();
				}
			}
		}
		return offscreen;
	}