Hallo allerseits,
ich habe für die Uni eine Aufgabe zu lösen und benötige dringend HIlfe
Erst musste man ein Koordinatensystem und darin dann Punkte einzeichnen und diese mit Linien verbinden. Soweit so gut...
Bei der nächsten Aufgabenstellung hänge ich leider etwas:
Mit einem neuen Thread und MouseEvents bekomme ich das Zeichnen des Rechtecks noch hin, aber wie der Zoom jetzt funktioniert begreife ich momentan nicht so wirklich .
Hier der neue Thread:
und hier die MousEvents:
So wie ich mir das Vorstelle speicher ich in mousRelease jetzt die Werte von dem Rechteck und baue daraus dann ein neues Koordinatensystem aber wie ich das jetzt mit den anderen "früheren" Koordinaten abgleiche check ich nicht....
Ich hoffe jemand kann mir helfen!
mfg
steedz
ich habe für die Uni eine Aufgabe zu lösen und benötige dringend HIlfe
Erst musste man ein Koordinatensystem und darin dann Punkte einzeichnen und diese mit Linien verbinden. Soweit so gut...
Bei der nächsten Aufgabenstellung hänge ich leider etwas:
Aufgabe 5
Erweitern Sie das Programm um eine Zoomfunktion, die es dem Benutzer ermöglicht - beispielsweise
durch Aufziehen eines Rechtecks - einen Teil der Grafik herauszuzoomen!
Achten Sie dabei darauf, dass die Achsteilungen "schöne" Werte bekommen (also beispielsweise
0:1, 0:2, 0:3 bei einem gezoomten Bereich von 0:05 : : : 0:35)!
Mit einem neuen Thread und MouseEvents bekomme ich das Zeichnen des Rechtecks noch hin, aber wie der Zoom jetzt funktioniert begreife ich momentan nicht so wirklich .
Hier der neue Thread:
PHP:
public void run() {
while (true) {
Graphics g = strategy.getDrawGraphics();
g.clearRect(0, 0, getWidth(), getHeight());
paintComponent();
if (p0 != null && p1 != null) {
xScaleMin = Math.min(p0.x, p1.x);
xScaleMax = xScaleMin == p0.x ? p1.x : p0.x;
yScaleMin = Math.min(p0.y, p1.y);
yScaleMax = yScaleMin == p0.y ? p1.y : p0.y;
BasicGraphicsUtils.drawDashedRect(g, xScaleMin, yScaleMin, xScaleMax
- xScaleMin, yScaleMax - yScaleMin);
}
g.dispose();
strategy.show();
try {
sleep(30L);
} catch (InterruptedException e) {
e.printStackTrace();
break;
}
}
}
};
und hier die MousEvents:
PHP:
public DrawSystem() {
super("Möp MÖp");
setDefaultCloseOperation(EXIT_ON_CLOSE);
addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent evt) {
p1 = evt.getPoint();
}
});
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent evt) {
p0 = evt.getPoint();
}
public void mouseReleased(MouseEvent evt) {
}
});
setSize(400, 300);
setVisible(true);
createBufferStrategy(2);
strategy = getBufferStrategy();
paintComponent();
}
So wie ich mir das Vorstelle speicher ich in mousRelease jetzt die Werte von dem Rechteck und baue daraus dann ein neues Koordinatensystem aber wie ich das jetzt mit den anderen "früheren" Koordinaten abgleiche check ich nicht....
Ich hoffe jemand kann mir helfen!
mfg
steedz