vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Zoomen innnerhalb einer Picturebox 
Autor: Volker Bunge
Datum: 10.02.13 10:50

Hallo zusammen,

für mein neues Projekt benötige ich Eure Hilfe.

Innerhalb einer festen Pictureboxgröße soll dass angezeigte Bild vergrößert und verkleinert werden.

Mein bisheriger Code sieht so aus:
Dim bmp As Bitmap
Dim resizingFactor As Double = 0
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles MyBase.Load
         ' Hier deaktiviert, da die Werte über Setting-Werte ermittelt werden
         'Me.Dateiname.Text = My.Settings.AktuellesVerzeichnis & 
         ' My.Settings.AktuelleDatei & "." & My.Settings.AktuelleDateiEndung
        Me.Dateiname.Text="C:\Temp\Bilder\DSCF0001.JPG"
 
        imgOriginal = Image.FromFile(Me.Dateiname.Text)
        Bildanzeige.Image = imgOriginal
        bmp = New Bitmap(Me.Dateiname.Text)
 
        ' ZoomSlider einstellen
        zoomSlider.Minimum = -1000
        zoomSlider.Maximum = 1000
        zoomSlider.SmallChange = 1
        zoomSlider.LargeChange = 1
        zoomSlider.UseWaitCursor = False
        Zoomfaktor.Text = 1
end sub
Private Sub Bildanzeige_Paint(ByVal sender As System.Object, ByVal e As _
  System.Windows.Forms.PaintEventArgs) Handles Bildanzeige.Paint
        If bmp IsNot Nothing Then
            e.Graphics.InterpolationMode = _
              Drawing2D.InterpolationMode.NearestNeighbor
            e.Graphics.PixelOffsetMode = Drawing2D.PixelOffsetMode.HighQuality
            If resizingFactor = 0 Then Exit Sub
 
            If resizingFactor > 0 Then
                Dim targetRect As New Rectangle(5, 5, bmp.Width * _
                  resizingFactor, bmp.Height * resizingFactor)
                e.Graphics.DrawImage(bmp, New Rectangle(targetRect.Location, _
                targetRect.Size))
                e.Graphics.DrawRectangle(Pens.Lime, targetRect)
            Else
                resizingFactor = resizingFactor * -1
                Dim targetRect As New Rectangle(5, 5, bmp.Width / _
                  resizingFactor, bmp.Height / resizingFactor)
                e.Graphics.DrawImage(bmp, New Rectangle(targetRect.Location, _
                targetRect.Size))
                e.Graphics.DrawRectangle(Pens.Lime, targetRect)
            End If
 
        End If
end sub
    Private Sub zoomSlider_Scroll(ByVal sender As System.Object, ByVal e As _
      System.Windows.Forms.ScrollEventArgs) Handles zoomSlider.Scroll
        Zoomfaktor.Text = zoomSlider.Value / 10
        resizingFactor = Zoomfaktor.Text
        Bildanzeige.Refresh()
    End Sub
    Private Sub Panel1_Scroll(ByVal sender As Object, ByVal e As _
      System.Windows.Forms.ScrollEventArgs) Handles Panel1.Scroll
        Bildanzeige.Refresh()
    End Sub
Benötigt werden
1 x Panel = Panel1
1 x Picturebox = Bildanzeige (liegt im Panel)
1 x HScrollbar = ZoomSlider
1 x Textbox = ZoomFaktor
Panel hat Autoscroll = true
Picturebox hat Sizemode = AutoSize

Was bisher funktioniert:

- Über den Zoomslider kann ich das Rectangle-Bild verkleinern und Vergrößern. Es fängt links oben bei 5,5 an und einen grünlichen (Lime) Rand, der sich auch bei einer Verkleinerung irgendwann kpl. innerhalb des Panels zeigt. Die linke obere Ecke und die Farbe ändern ist erst einmal kein Problem.
- Da ja das Panel die Scrollbalken hat und das Panel bzw. die Picturebox das Originalbild in Originalgröße anzeigt, kann ich mit den Scrollbalken auch das Bild in der Anzeige entsprechend verschieben.

Was nicht geht:
- Das Bild kann ich über die Scrollbalken nicht kpl. anzeigen lassen. Ich sehe somit nicht alles, selbst wenn die Scrollbalken ganz unten bzw. ganz oben sind. Dies ist hoffentlich weg, wenn der nächste Punkt gelöst ist.
- Das verkleinerte/vergrößerte Bild wird nicht in die Picturebox in dieser Größe des Rectangles übernommen (Hierfür bräuchte ich eben Eure Hilfe).

Wäre echt Super, wenn mir jemand von Euch eine Lösung meines Problems nennen könnte.

Vielen Dank

Volker
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Zoomen innnerhalb einer Picturebox3.677Volker Bunge10.02.13 10:50
Re: Zoomen innnerhalb einer Picturebox2.800Manfred X10.02.13 23:35
Re: Zoomen innnerhalb einer Picturebox3.044Volker Bunge11.02.13 18:15
Re: Zoomen innnerhalb einer Picturebox2.769Christoph197212.02.13 18:27

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel