嗨,有谁知道拍摄模拟屏幕截图的好方法,这样您就可以指定分辨率并获得更高质量的图像?我能想到的唯一方法是放大并将多张图像拼接在一起,但这需要很长时间......
更新:
我已经成功导出整个区域,神奇的参数是:.setAnimationParameterEnabled(Panel.ANIM_BOUNDS_CLIPPING_XJAL, false)
它将迫使 Anylogic 绘制整个区域,而不仅仅是可见区域。
但它并不总是有效。我必须运行代码,在该区域周围移动,放大/缩小并重试。在某些时候它会变得非常有问题,可能是因为它开始绘制所有东西,然后代码就可以工作了。问题是我不知道该怎么做才能让它工作......
java.awt.Component alPanel = getExperiment().getPresentation().getPanel();
getExperiment().getPresentation().getPanel().setAnimationParameterEnabled(Panel.ANIM_BOUNDS_CLIPPING_XJAL, false);
getExperiment().getPresentation().setMaximized(false);
getExperiment().getPresentation().setPanelSize(5000, 5000);
java.awt.image.BufferedImage imageExperiment = new java.awt.image.BufferedImage(
alPanel.getWidth(),
alPanel.getHeight(),
java.awt.image.BufferedImage.TYPE_INT_RGB
);
getExperiment().drawPresentation(getExperiment().getPresentation().getPanel(), imageExperiment.createGraphics(), false);
java.awt.Component component = getExperiment().getPresentation().getPanel();
// call the Component's paint method, using
// the Graphics object of the image.
component.paintAll( imageExperiment.getGraphics() ); // alternately use .printAll(..)
try {
// write the image as a PNG
javax.imageio.ImageIO.write(
imageExperiment,
"png",
new File("screenshotAnylogic.png"));
} catch(Exception e) {
e.printStackTrace();
}