maddin Geschrieben 6. Mai 2010 Teilen Geschrieben 6. Mai 2010 Hi, ich stehe gerade vor einem recht großen Problem. Ich habe ein kleines Programm geschrieben, dass diverse Informationen grafisch aufbereitet. Dazu verwende ich die Eclipse BIRT Chart Engine API in einer Eclipse RCP Anwendung. Soweit funktioniert alles wie gewollt, bis auf ein hoffentlich nicht unlösbares Problem. Ich würde gerne in dem Graphen zoomen können, d.h. mit der Maus einen Bereich aufziehen, auf den dann die Anzeige vergrößert wird. Ähnliches bekomme ich z.B. mit JFreeChart out-of-the-box, scheidet allerdings aus diversen, teilweise politischen, Gründen aus. Dazu ein paar Fragen: - hat das schon mal jemand implementiert und kann mir seinen Code zur Verfügung stellen? (Idealfall) oder ein paar kleine Dinge die mir für eine eigene Umsetzung fehlen. - Kann ich beim behandeln des MouseMove Events herausfinden, an welcher Position innerhalb der Axes ich mich befinden? Ich habe bisher nur die Position einzelner Datenpunkte bekommen. - Kann ich die genau Position der Plot Client Area herausfinden (chart.getPlot().getClientArea(). ---), also wieviel Abstand hat die Client Area von oben, links und wie groß ist diese. - Kann ich ermitteln, wie groß die einzelnen Blöcke sind, besonders auch die weiteren Bestandteile im Plot (Axes, Labels, ...) Ich hoffe auf ein paar hilfreiche Antworten. -- Martin Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
smash Geschrieben 8. Mai 2010 Teilen Geschrieben 8. Mai 2010 Also ich versuche mal zu helfen. Ich kenne mich aber leider nicht mit RCP / SWT aus. BIRT habe ich bisher auch nur für Webanwendungen verwendet. Ich ziehe mal den Vergleich zu Swing. Da würde man Diagramme wahrscheinlich in einem JPanel zeichnen. Die Größe und Position kann man dann ja ganz einfach herausbekommen. Mit einem MouseMotionListener auf dem Panel kann man die relative Position des MouseCursers innerhalb des Panels erhalten. Mit einem MouseListener dürften sich dann verschiedene Zoom Varianten realisieren lassen (Klick, Gummiband...). Grundsätzlich findet irgendwo eine Umrechnung zwischen dem Koordinatensystem des Diagramms / der Daten und dem Koordinatensystem des Bildschirms statt. Ich glaube zur Umrechnung wird ein Zoomfaktor ( oder für jede Achse einen) und ein Offset für x und einen für y benötigt, um anzugeben, welchen Bereich des Diagramm Koordinatensystem am Bildschirm angezeigt werden soll. Bei Swing kann man das glaube ich mit dem Graphics Objekt in der paintComponent Methode machen. Wenn ich mich recht erinnere kann man das Diagramm zeichnen und dann das Koordinatensystem so verschieben, dass nur der gewünschte Bereich im Viewport liegt und das gezeichnete entsprechend dem gewünschten zoom zu skalieren. Kann gut sein, dass es da etwas effizienteres gibt. Bleibt also die Fragen: Wie geht das mit RPC / SWT? Wie ist BIRT in RPC intefiert (insbesondere die Diagramme) ? Sind alle wichtigen Stellen erreichbar, so dass man mal den Code lesen kann, oder vielleicht eine Klasse ableiten kann? Es könnte sich lohnen mit dem Aufbau von RCP-BIRT auseinanderzusetzten. Ich hoffe ich konnte wenigstens ein wenig helfen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ron-calli Geschrieben 2. Juni 2010 Teilen Geschrieben 2. Juni 2010 Hallo Martin, ich stehe vor demselben Problem! Bist du an der Stelle wie du die Position im Chart bekommst weiter gekommen? Ich habe das Zoomen jetzt erst so gelöst, das ich den ganzen Plot vergrößere. Ist aber nur semioptimal da man die Achsen nicht mehr sieht und jedesmal scrollen muss. VG Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.