Hello,
I have a problem when using copyArea to scroll an image with a negative dx value (that is, scroll an image to the left) with an opaque picture format.
Here is a simple test I performed in a JFrame:
public class TestFrame extends javax.swing.JFrame
{
private BufferedImage buffer = null;
/**
* Creates new form TestFrame
*/
public TestFrame()
{
try
{
BufferedImage img = ImageIO.read(new File("/home/lauwenmark/tmp/test.jpg"));
this.buffer = new BufferedImage(1600, 1200, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = this.buffer.createGraphics();
g2d.drawImage(img, 0, 0, this);
g2d.dispose();
}
catch (IOException ex)
{
ex.printStackTrace();
this.buffer = new BufferedImage(1600, 1200, BufferedImage.TYPE_INT_RGB);
}
}
@Override
public void paint(Graphics g)
{
Graphics2D g2d = (Graphics2D)g;
super.paint(g);
g2d.drawImage(this.buffer, 0, 0, this);
}
And I scroll using this:
Graphics2D g2d = buffer.createGraphics();
g2d.copyArea(64, 0, this.buffer.getWidth()-64, this.buffer.getHeight(), -64, 0);
g2d.dispose();
this.repaint();
When this.buffer is of TYPE_INT_ARGB, it works as expected. However, when using TYPE_INT_RGB, it doesn’t and ends up corrupting the display like this:
http://img705.imageshack.us/img705/8176/cran5.png
Uploaded with ImageShack.us
Where am I doing it wrong? Or is it a bug in copyArea?