2016-04-13 7 views
0

Gibt es eine Möglichkeit, programmatisch Bilder in Anylogic zu zeichnen? Die einzige Methode, die ich bisher gefunden habe, ist das Hinzufügen eines Bildelements zum Projekt, das Angeben seines Abbilds aus dem Dateisystem und dann das Abrufen aus dem Cache zur Laufzeit (z. B. getPresentation().getPanel().getImageCache().getCachedImage(this, "/wandering_elephants/", "Altitudes.PNG", 500, 500);) und das Zeichnen dorthin.Programmgesteuertes Zeichnen von Bildern in Anylogic

Aber das scheint Farbe in den Arsch zu sein, falls Sie Bilder in variabler Größe erstellen müssen. Ich habe nach einem Drawable-Element in der Palette gesucht, aber es scheint, dass diese grundlegende Funktionalität fehlt.

+0

nicht wirklich sicher, was Sie anstreben? Was willst du erreichen? – Benjamin

+0

Ich muss einige Hintergrund "Karte" für Agenten dynamisch zeichnen, um Informationen über Welt anzuzeigen. Zum Beispiel, in Wandering Elefanten Beispiel in Anylogic zeigen sie Höhe Karte des Geländes dynamisch generiert. Um dies zu tun, verwendet Autor Bildelement aus Pallete mit einer leeren PNG-Datei. Dann lädt er dieses Bild aus dem Cache wie in meiner Frage erwähnt und zeichnet auf seine Grafik. Es gibt also offensichtlich ein generisches Zeichenelement. Müssen Sie ein leeres Bild vortäuschen und es dann aus dem Cache holen, nur um die Fähigkeit zum Zeichnen zu bekommen, scheint es ein schrecklicher Overkill und ein Mangel an benötigten Features zu sein. –

+0

ok, sorry aber mir ist noch nicht ganz klar. Gibt es mehrere Hintergrundbilder, die Sie je nach Modellbedingungen anzeigen möchten? Da das Image-Objekt so viele Bilder enthalten kann, wie Sie möchten (während der Entwurfszeit in den Eigenschaften vorgeladen). Sie können dann umschalten, welcher sichtbar sein soll. Hast du das versucht? – Benjamin

Antwort

0

Sie können replizierte Rechtecke verwenden. Um die Anzahl der Replikationen zu ändern, verwenden Sie eine Variable vom Typ int namens numberOfReplications. Kleben Sie das in die Eigenschaft "Replikation" Ihres Rechtecks ​​und Sie können diese Variable dynamisch ändern.

cheers

+0

Aber was ist mit Situationen, in denen Sie mehr Rechtecke basierend auf Simulationsfortschritt oder Benutzereingaben während der Simulation hinzufügen müssen? Ich glaube, Sie können nicht mehr Rechtecke programmatisch nach dem Start der Simulation hinzufügen. –

+0

Sie können jedes Objekt programmatisch erstellen, da es sich nur um Java handelt. Überprüfen Sie für ein Rechteck http://www.anylogic.com/anylogic/help/index.jsp?topic=/com.xj.anylogic.help/html/javadoc/com/anylogic/engine/presentation/ShapeRectangle.html – Benjamin

+0

Sicher, aber Sie müssen es irgendwie zur Hauptagentenklasse hinzufügen, damit es von ihm gezeichnet und gehandhabt wird. Ich habe generierten Java-Code überprüft, ohne dass dies zur Laufzeit mithilfe der bereitgestellten API angezeigt werden kann. –