added fit, zoom in and zoom out

This commit is contained in:
hneemann 2016-05-16 18:02:24 +02:00
parent cc798f48f5
commit b0341a67fe
2 changed files with 11 additions and 13 deletions

View File

@ -224,7 +224,7 @@ public class Main extends JFrame implements ClosingWindowListener.ConfirmSave, E
ToolTipAction zoomIn = new ToolTipAction(Lang.get("menu_zoomIn"), ICON_ZOOMIN) { ToolTipAction zoomIn = new ToolTipAction(Lang.get("menu_zoomIn"), ICON_ZOOMIN) {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
circuitComponent.scaleCircuit(1.2); circuitComponent.scaleCircuit(1.25);
} }
}; };
ToolTipAction zoomOut = new ToolTipAction(Lang.get("menu_zoomOut"), ICON_ZOOMOUT) { ToolTipAction zoomOut = new ToolTipAction(Lang.get("menu_zoomOut"), ICON_ZOOMOUT) {

View File

@ -243,9 +243,13 @@ public class CircuitComponent extends JComponent {
} }
private Vector getPosVector(MouseEvent e) { private Vector getPosVector(MouseEvent e) {
return getPosVector(e.getX(), e.getY());
}
private Vector getPosVector(int x, int y) {
try { try {
Point2D.Double p = new Point2D.Double(); Point2D.Double p = new Point2D.Double();
transform.inverseTransform(new Point(e.getX(), e.getY()), p); transform.inverseTransform(new Point(x, y), p);
return new Vector((int) Math.round(p.getX()), (int) Math.round(p.getY())); return new Vector((int) Math.round(p.getX()), (int) Math.round(p.getY()));
} catch (NoninvertibleTransformException e1) { } catch (NoninvertibleTransformException e1) {
throw new RuntimeException(e1); throw new RuntimeException(e1);
@ -306,17 +310,11 @@ public class CircuitComponent extends JComponent {
* @param f factor to scale * @param f factor to scale
*/ */
public void scaleCircuit(double f) { public void scaleCircuit(double f) {
try { Vector dif = getPosVector(getWidth() / 2, getHeight() / 2);
Point2D.Double p = new Point2D.Double(); transform.translate(dif.x, dif.y);
transform.inverseTransform(new Point(getWidth() / 2, getHeight() / 2), p); transform.scale(f, f);
Vector dif = new Vector((int) Math.round(p.getX()), (int) Math.round(p.getY())); transform.translate(-dif.x, -dif.y);
transform.translate(dif.x, dif.y); repaint();
transform.scale(f, f);
transform.translate(-dif.x, -dif.y);
repaint();
} catch (NoninvertibleTransformException e1) {
throw new RuntimeException(e1);
}
} }
private void editAttributes(VisualElement vp, MouseEvent e) { private void editAttributes(VisualElement vp, MouseEvent e) {