Java Swing Question: Robot Screenshot does odd things when close tothe mouse cursor

G

George Weis

Hi:
I'm trying to write a simple screen enlarger. The basic
algorithm is this:

a.) Get current mouse coordinates.
b.) Take a screen shot using a rectangle consisting of (mouse X,
mouse Y, 150, 150)
c.) Create a new scaled image from the screen shot with a height and
width of 300.
This should "zoom" 2 X for the portion of the screen the mouse cursor
is on and show it in a 300 X 300 box
(the image is drawn on the glass panel on top of the other root
panels).

This doesn't produce the result I want.

The screen shot looks fine if I take the screen shot 350 pixels away
from the current mouse coordinates, in other words (mouse X + 350,
mouse Y + 350, 150, 150).

But, if I try to take the screen shot too close to the current X and
Y, I get double or triple images of the same area in the image.

I can't attach a sample image, but it looks like this, each number
representing one of the images.

1 | 2 | 3 |
| | |
---- | |
| |
-------- --- |
|
--------------------

Anyone know what is causing this behavior? And how to get rid of it?
And by the way, I freely admit I am a newbie, so if anyone knows a
better way to render a zoom of an arbitrary part of a User Frame,
please let me know.

Thanks,

George
 
G

George Weis

Makes sense to me. I guess you'd get the same effect by looking at
two mirrors
lined up opposite each other.

As for your words of advice, it just would be nice to something in
pure java,
because the product is supposed to be run on a variety of platforms.
So,
the alternative is to say:

if we're on windows
{
use maximize.exe
}
else if we're on a Mac
{
use whatever they use
}
else if we're on Mandrake
....

that's pretty ugly too.
 
J

John B. Matthews

George Weis said:
Hi:
I'm trying to write a simple screen enlarger. The basic
algorithm is this:

a.) Get current mouse coordinates.
b.) Take a screen shot using a rectangle consisting of (mouse X,
mouse Y, 150, 150)
c.) Create a new scaled image from the screen shot with a height and
width of 300.
This should "zoom" 2 X for the portion of the screen the mouse cursor
is on and show it in a 300 X 300 box (the image is drawn on the glass
panel on top of the other root panels).

This doesn't produce the result I want.

The screen shot looks fine if I take the screen shot 350 pixels away
from the current mouse coordinates, in other words (mouse X + 350,
mouse Y + 350, 150, 150).
...
Anyone know what is causing this behavior? And how to get rid of it?
And by the way, I freely admit I am a newbie, so if anyone knows a
better way to render a zoom of an arbitrary part of a User Frame,
please let me know.

I think Pete's right about the "video feedback" effect. Here's an
alternate way to get a BufferedImage of a component that can be scaled
_ad_lib_. On the downside, the image will be "pixelated," accordingly.

<http://groups.google.com/group/comp.lang.java.gui/msg/662e54ff77c3e6f8>

You can get a smoother result by adjusting the graphics context's
transform. Here's an example that scales to fill the enclosing panel

<http://groups.google.com/group/comp.lang.java.gui/msg/3f1781d063cae9e7>
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,982
Messages
2,570,190
Members
46,736
Latest member
zacharyharris

Latest Threads

Top