长话短说我正在使用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)