こんにちは、解像度を指定してより高品質の画像を取得できるように、シミュレーションのスクリーンショットを撮る良い方法を知っている人はいますか? 私が考えることができる唯一の方法は、ズームインして複数の画像をつなぎ合わせることですが、時間がかかります...
更新:
エリア全体を正常にエクスポートできました。魔法のパラメーターは次のとおりです。.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();
}