Zoomfunktion mit Mausrad

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    Zoomfunktion mit Mausrad

    Hallo Gemeinde,



    ist es möglich mittels Mausrad in einem Bild hinein zu zoomen und wider hinaus zu zoomen, und wenn ja wie auf einer Windows Forms Anwendung. Wenn das Bild gezoomt wäre, wie müsste dann die Funktion aussehen das ich in den gezoomten ein weitere Bild anzeigen lässt. Sprich um so tiefer ich Zoome um so mehr andere Bilder werden erkannt. und das selbe beim her raus zoomen. Falls ihr nicht genau wisse was ich meine, Google Maps wäre ein klassisches Beispiel zum Thema: Zoomfunktion und Darstellung mit dem Mausrad



    Vilen dank für ein paar Orientierung-Wege

    DerLaie
    Du musst das MouseWheel-Event der PicBox auswerten. Da steht im Parameter e.Delta drin, ob das Mausrad nach oben oder unten gedreht wurde.
    Dann brauchst Du eine eigene Double-Variable, z.B. namens CurrentZoomFactor, die bei 1 beginnt und dann durch Mausraddrehung vergrößert oder verkleinert wird.
    Dann musst Du das Bild zeichnen, und abhängig davon, wie groß der Zoomfaktor ist, entweder skaliert oder Du must auf ein anderes Bild umschalten. Denn was anderes ist es bei G**gle-Maps nicht. Es werden unterschiedliche Bilder verwendet. Aber das weißt Du ja selbst schon. Wird also ein bestimmter Zoomfaktor über-/unterschritten, wird das Bild gewechselt.

    Eine einfache, aber nicht vollständige Zoombilderstellung ist:

    VB.NET-Quellcode

    1. Private Function GetZoomedImage(Image As Image) As Image
    2. Dim TargetRectangle = New Rectangle(0, 0, PictureBox1.Width, PictureBox1.Height)
    3. Dim TargetImage = New Bitmap(Image.Width, Image.Height)
    4. Using Graphics = Drawing.Graphics.FromImage(TargetImage)
    5. Graphics.DrawImage(Image, TargetRectangle, 0, 0, CInt(Image.Width * CurrentZoomFactor), CInt(Image.Height * CurrentZoomFactor), GraphicsUnit.Pixel)
    6. End Using
    7. Return TargetImage
    8. End Function
    Originalbild rein, skaliertes Bild kommt raus. Und bevor Du fragst: Ich hab bei einer Suchmaschine meiner Wahl nach passenden Begriffen wie C# Bitmap Zoom gesucht (ja, C#, da da mehr Ergebnisse als mit VB.NET kommen und die Codeanpassung von C#-Beispielen zu VB.NET einfach ist), das ausprobiert und mit den Parametern und Variablen gespielt.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.