Laden...

Auf Mausposition zoomen

Erstellt von Puma321 vor 10 Jahren Letzter Beitrag vor 10 Jahren 1.635 Views
P
Puma321 Themenstarter:in
19 Beiträge seit 2013
vor 10 Jahren
Auf Mausposition zoomen

Hallo,

Ich schreib mir gerade ein Zeichenprogramm und stecke gerade fest.

Wenn ich das Mausrad bewege dann zoomt das Zeichenprogramm mir die Zeichnung allerdings möchte ich jetzt, dass er mir je nach dem wo ich meine Maus gerade habe er mir meine Zeichnung so verschiebt dass ich nach dem zoomen wieder auf dem Punkt bin auf dem ich davor war. (so wie in fast allen Zeichenprogrammen)

Noch eine kleine Anmerkung: bei z.B. "MyMathOP.PunktWertDividieren" hab ich mir eine Methode geschrieben so dass ich in dem Fall einen Punkt (X und Y) mit einem Wert dividieren kann
das gleiche auch bei "PunkteAddieren" er addiert mir 2 Punkt

Hier mal der Code:


            PointF OldPos = MausposNullpunktF;

            Zoomfaktoraenderung(e.Delta);
            MausPositionenSetzen(e);


            float NewZoom = Zoomfaktor;
            PointF NewPosPixel = MyMathOP.PunktWertDividieren (MyMathOP.PunktWertDividieren(OldPos, NewZoom), Einheit);
            PointF MausposJetztPixel = MyMathOP.PunktWertDividieren (MyMathOP.PunktWertDividieren(MausposNullpunktF, NewZoom), Einheit);



            PointF pixelAbstand = MyMathOP.PunktUnterschied(NewPosPixel, MausposJetztPixel);
            pixelAbstand = new PointF(pixelAbstand.X, -pixelAbstand.Y);
            Zeichnung.Location = MyMathOP.PointConverter (MyMathOP.PunkteAddieren(Zeichnung.Location, pixelAbstand));

Meine Gadanken dazu: (ich hoffe sie sind nachvollziehbar)

  1. Ich merke mir meine Position der Maus vor dem Zoom;
  2. Dann führ ich den Zoom aus
  3. Rechne ich mir aus WO DIE POSITION (pixel) NACH DEM ZOOM ist
  4. Rechne ich aus wo meine aktuelle Pixelposition ist
  5. Rechne ich den Abstand aus diesen beiden Pixelposition aus
  6. wandel ich mir die Werte in die richtigen + und - Werte aus
  7. verschiebe ich mir mein Koodinatensystem um den ausgerechneten Pixelabstand

Bei "Zoomfaktoraenderung(e.Delta);" setzt er mir den Zoofaktor auf die entsprchende Zahl

und bei "MausPositionenSetzen(e);" rechnet er mir die Position vom Mauszeiger relativ zum Nullpunkt aus
Hier der Code: (müsste eigentlich passen)


        }
        private void MausPositionenSetzen(MouseEventArgs e)
        {
            Mauspos = e.Location;
            MausposF = e.Location;
            MausposNullpunkt = new Point((int)MyMathOP.PunktWertMultiplizieren (MyMathOP.PunktWertMultiplizieren(MyMathOPZeichnung.MausPosRelativZumNullpunktF(e.Location), (int)Einheit), _Zoomfaktor).X, (int)MyMathOP.PunktWertMultiplizieren (MyMathOP.PunktWertMultiplizieren(MyMathOPZeichnung.MausPosRelativZumNullpunktF(e.Location), (int)Einheit), _Zoomfaktor).Y);
            MausposNullpunktF = new PointF((float)MyMathOP.PunktWertMultiplizieren (MyMathOP.PunktWertMultiplizieren(MyMathOPZeichnung.MausPosRelativZumNullpunktF(e.Location), (float)Einheit), _Zoomfaktor).X, (float)MyMathOP.PunktWertMultiplizieren (MyMathOP.PunktWertMultiplizieren(MyMathOPZeichnung.MausPosRelativZumNullpunktF(e.Location), (float)Einheit), _Zoomfaktor).Y);

}

Ich würde mich sehr freuen wenn mir da jemand helfen könnte denn ich mach schon seit Tagen an diesem Problem herum

Gruß
Puma321

49.485 Beiträge seit 2005
vor 10 Jahren

Hallo Puma321,

du hast beschrieben was du machen willst und wie du es machen willst, aber leider nicht, was dein Problem ist. Was genau geht nicht? Was ist der Effekt? Wo genau hängst du?

herbivore

P
Puma321 Themenstarter:in
19 Beiträge seit 2013
vor 10 Jahren

Oh sorry

Mein Problem ist, dass das was ich ausrechne nicht stimmt vom zoomen her. Also der Pixelabstand passt irgenwie nicht

wenn ich zoome dann ist die KoordinatenPosition (also die vom Nullpunkt nicht vom panel)vor dem zoomen nicht die gleiche wie nach dem zoomen

es schiebt mir jetzt vom Nullpunkt aus gesehen den Nullpunkt zu weit in richtung Mausposition

Gruß
Puma321

ps. "Image Zoom" hab ich schon gesehen aber irgendwie bringt es mich auch nicht wirklich weiter

Hinweis von herbivore vor 10 Jahren

gemeint ist vermutlich Image Zoom

5.742 Beiträge seit 2007
vor 10 Jahren