![](/img/trans.png)
[英]How to make effect of ZoomIn ZoomOut in apeareance of Screen in Libgdx
[英]How to adjust scrollbar with image zoomIN and zoomOUT in Swing
我想在圖像zoomIN和zoomOUT時調整滾動條,JPanel和JScrollpane上的我的圖像顯示包含JPanel。
您需要使用新的圖像大小調用setPreferredSize
(使用此測試您的應用程序)。
從以下zoomOut
更改zoomIN
和zoomIN
:
can.setSize(imgSize);
至:
can.setPreferredSize(imgSize);
您需要更新滑塊更改的首選大小 。 我寫了一個小程序(下面的代碼)來生成這個截圖(帶縮放控制):
圖像組件代碼:
static class ImageComponent extends JComponent {
final BufferedImage img;
public ImageComponent(URL url) throws IOException {
img = ImageIO.read(url);
setZoom(1);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Dimension dim = getPreferredSize();
g.drawImage(img, 0, 0, dim.width, dim.height, this);
}
private void setZoom(double zoom) {
int w = (int) (zoom * img.getWidth());
int h = (int) (zoom * img.getHeight());
setPreferredSize(new Dimension(w, h));
revalidate();
repaint();
}
}
主程序:
public static void main(String[] args) throws Exception {
final URL lenna =
new URL("http://upload.wikimedia.org/wikipedia/en/2/24/Lenna.png");
final JSlider slider = new JSlider(0, 1000, 500);
final ImageComponent image = new ImageComponent(lenna);
slider.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
image.setZoom(2. * slider.getValue() / slider.getMaximum());
}
});
JFrame frame = new JFrame("Test");
frame.add(slider, BorderLayout.NORTH);
frame.add(new JScrollPane(image));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 300);
frame.setVisible(true);
}
您應該根據可見的圖像大小更改調整JPanel的首選大小。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.