小编Pet*_*rMI的帖子

在Java中重新绘制BufferedImage不会更改面板的内容

长话短说我正在使用BufferedImage绘制Mandelbrot,我将其放入自定义JPanel中.我已经完成了设置的缩放,但是在重新连接时有重新绘制的问题.当unzooming我将图像的值更改为图像的先前状态(我保持堆栈中的每个状态)并重新绘制面板.问题是堆栈中的最后一个图像被弹出但是没有绘制.

这些是我的实例变量

    private BufferedImage image = new BufferedImage(500, 500, BufferedImage.TYPE_INT_ARGB);  
    private Stack<BufferedImage> zooms = new Stack<BufferedImage>();  
    private boolean unzoom = false;  
Run Code Online (Sandbox Code Playgroud)

这就是我如何缩放和推送我想要保存在堆栈上的图像

public void mouseReleased(MouseEvent e)
{
    zooms.push(image);
    <some code for zooming that works>
    repaint();
}  
Run Code Online (Sandbox Code Playgroud)

现在我想通过滚动来取消缩放

class WheelZoomListener implements MouseWheelListener
{
    public void mouseWheelMoved(MouseWheelEvent e) 
    {
        unzoom = true;  
    //this is how I assign the current image to be the one before the last zoom
        image = zooms.pop();
        repaint();
    }
}  
Run Code Online (Sandbox Code Playgroud)

最后这是我的绘画方法

public void paintComponent(Graphics g)
{
    super.paintComponent(g);
    Graphics2D …
Run Code Online (Sandbox Code Playgroud)

java swing bufferedimage

2
推荐指数
1
解决办法
545
查看次数

标签 统计

bufferedimage ×1

java ×1

swing ×1