static float darkenScreenArea_factor = 0.5f; static JWindow darkenScreenArea(Rectangle r, double seconds) { ret disposeWindowAfter(iround(seconds*1000), darkenScreenArea(r)); } static JWindow darkenScreenArea(final Rectangle r) { ret (JWindow) swingAndWait(func { Rectangle r2 = maxWindowBounds().intersection(r); if (neq(r, r2)) warn("darkenScreenArea: Rectangle cropped"); if (r2.isEmpty()) null; BufferedImage img = shootScreen2(r2); RescaleOp op = new RescaleOp(darkenScreenArea_factor, 0, null); img = op.filter(img, null); JLabel label = new JLabel(imageIcon(img)); new JWindow w; w.setBounds(r2); w.add(label); w.setAlwaysOnTop(true); w.setVisible(true); ret w; }); }