gpt4 book ai didi

java - 如何使用图形捕获滚动 Pane 的内容

转载 作者:行者123 更新时间:2023-11-30 03:42:46 26 4
gpt4 key购买 nike

我正在尝试从 JScrollpane 的内容创建缓冲图像。 Jscrollpane 尺寸为 250x200。内容溢出,图像中仅捕获可见部分。我正在使用 Java 2D 图形。

有没有办法捕获滚动页面的完整内容?

最佳答案

只需将内容绘制到BufferedImage,而不是滚动 Pane

例如:

public class Test {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable(){
public void run() {
final Image image =
new ImageIcon("stackoverflow.png").getImage();
JPanel imagePanel = new JPanel() {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 0, 0, this);
}
@Override
public Dimension getPreferredSize() {
return new Dimension(image.getWidth(this),
image.getHeight(this));
}
};
JScrollPane pane = new JScrollPane(imagePanel);
pane.setPreferredSize(new Dimension(200, 200));
JOptionPane.showMessageDialog(null, pane);

BufferedImage newImage = getImageFromComponent(imagePanel);
JLabel label = new JLabel(new ImageIcon(newImage));
JOptionPane.showMessageDialog(null, label);
}
});
}
private static BufferedImage getImageFromComponent(Component component) {
BufferedImage img = new BufferedImage(
component.getWidth(), component.getHeight(),
BufferedImage.TYPE_INT_RGB);
Graphics g = img.createGraphics();
component.paint(g);
g.setFont(new Font("impact", Font.PLAIN, 30));
g.drawString("Image of Panel", 40, 50);
g.dispose();
return img;
}
}

首先将面板放入滚动 Pane 内。

enter image description here

当我们关闭它时,面板的内容将被绘制到 BufferedImage 中,并添加到标签中。

enter image description here

关于java - 如何使用图形捕获滚动 Pane 的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26440347/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com