JScrollpane의 내용에서 버퍼링 된 이미지를 만들려고합니다. Jscrollpane 디멘션은 250x200입니다. 컨텐츠가 스필 오버되고 가시 섹션 만 이미지에 캡처됩니다. Java 그래픽 2D를 사용하고 있습니다.그래픽을 사용하여 Scrollpane의 내용을 캡처하는 방법
스크롤 페이지의 전체 내용을 캡처하는 방법이 있습니까?
JScrollpane의 내용에서 버퍼링 된 이미지를 만들려고합니다. Jscrollpane 디멘션은 250x200입니다. 컨텐츠가 스필 오버되고 가시 섹션 만 이미지에 캡처됩니다. Java 그래픽 2D를 사용하고 있습니다.그래픽을 사용하여 Scrollpane의 내용을 캡처하는 방법
스크롤 페이지의 전체 내용을 캡처하는 방법이 있습니까?
내용물 을 스크롤 창이 아닌 BufferedImage에 페인팅하면됩니다. 예를 들어
:
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;
}
}
먼저 패널 스크롤 창 안에 넣고.
우리가 그것을 닫습니다
는 패널의 내용이 BufferedImage의에 그려진, 그리고 라벨에 추가됩니다.감사합니다. 고맙습니다. scrollpane에서 렌더링되는 이미지는 내가 무엇을했는지입니다. 이미지 크기를 얻으려면 스크롤 패널/패널 크기를 가져와야합니다. 그러면 전체 이미지, 심지어 보이지 않는 부분까지 페인트됩니다. – user907737
그건 내 코드가하는 것과 정확히 같습니다. 문제가 있습니까? –
다시 한번 감사드립니다. 알았어. – user907737
보기 ['ComponentImageCapture' (http://stackoverflow.com/a/5853992/418556). –