Um ein Bild anzuzeigen verwenden Sie doch sicherlich auch die Standard PictureBox oder alternativ eine ImageBox. Aber was machen Sie, wenn das Bild größer ist, als die PictureBox selbst? Klar - Sie ändern die Größe der PictureBox, so dass das Bild komplett angezeigt werden kann. Aber was machen Sie, wenn Sie die Größe der PictureBox aufgrund des unzureichenden Platzangebots auf der Form nicht ändern können oder das Bild größer ist als die Form, auf der sich die PictureBox befindet? Nun ja, das Bild wird dann halt nicht komplett angezeigt. Und da weder die PictureBox, noch das Image-Objekt über die die Eigenschaft Scrollbars verfügen, über welche sich horizontale und/oder vertikale Scrollbalken anzeigen lassen, wird das Bild demnach niemals komplett angezeigt. Also, brauchen wir eine Lösung, über welche sich horizontale und vertikale Scrollbalken bei Bedarf anzeigen lassen, um den Bildausschnitt innerhalb der PictureBox scrollen zu können. Kurze Überlegung: Was brauchen wir hierfür alles? Und so geht's:
Und warum jetzt eigentlich ein Image-Objekt für die Anzeige des Bildes? Na ja, ganz einfach. Das Image-Objekt passt sich gegenüber der PictureBox automatisch der Größe des Bildes an. Und da das Image-Control in einem PictureBox-Container liegt, kann man dieses bequem über die Scrollbalken scrollen (im Prinzip wird es ja nur verschoben - nach oben, nach unten, nach links oder nach rechts). Nun aber zur Programmierung ' Scrollbars bei Bedarf anzeigen Private Sub Picture_ShowScrollbars() Dim hVis As Boolean Dim vHis As Boolean ' wenn die ImageBox größer als der Container ist ' entsprechend vertik. bzw. horiz. ScrollBars anzeigen With picContainer VScroll1.Visible = (imgPicture.Height > .ScaleHeight) HScroll1.Visible = (imgPicture.Width > .ScaleWidth) picEdge.BorderStyle = 0 picEdge.Visible = HScroll1.Visible Or VScroll1.Visible ' Breite des horizontalen Scrollbalkens HScroll1.Width = .ScaleWidth ' Höhe des vertikalen Scrollbalkens VScroll1.Height = .ScaleHeight ' Scrollbalken positionieren HScroll1.Left = 0 HScroll1.Top = .ScaleHeight - HScroll1.Height VScroll1.Left = .ScaleWidth - VScroll1.Width VScroll1.Top = 0 picEdge.Left = .ScaleWidth - VScroll1.Width picEdge.Top = .ScaleHeight - HScroll1.Height HScroll1.Width = picEdge.Left VScroll1.Height = picEdge.Top ' Min/Max-Eigenschaften aktualisieren VScroll1.Max = (imgPicture.Height - .ScaleHeight) + _ HScroll1.Height HScroll1.Max = (imgPicture.Width - .ScaleWidth) + _ VScroll1.Width End With End Sub Private Sub HScroll1_Change() imgPicture.Left = -HScroll1.Value End Sub Private Sub HScroll1_Scroll() imgPicture.Left = -HScroll1.Value End Sub Private Sub VScroll1_Change() imgPicture.Top = -VScroll1.Value End Sub Private Sub VScroll1_Scroll() imgPicture.Top = -VScroll1.Value End Sub Jedesmal, wenn Sie nun dem Image-Control ein Bild zuweisen, rufen Sie gleich danach die Prozedur Picture_ShowScrollbars auf, so dass die Scrollbalken bei Bedarf angezeigt oder auch ausgeblendet werden. Private Sub cmdLoadPicture() ' Bild-Auswahl (Standard-Dialog) ' Benötigt wird das CommonDialog-Control ' (COMDLG32.OCX) On Local Error Resume Next With CommonDialog1 .CancelError = True .Filter = "alle Bilddateien|*.bmp;*.jpg;*.gif" .ShowOpen If Err = 0 Then imgPicture.Picture = LoadPicture(.FileName) Picture_ShowScrollbars End If End With End Sub Dieser Tipp wurde bereits 33.564 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats Mai 2024 Hermann Röttger Wochentage eines Datumsbereichs ermitteln Wochentage eines Datumsbereichs ermitteln, optional mit Feiertagsberechnung sevZIP40 Pro DLL Zippen und Unzippen wie die Profis! Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. |
|||||||||||||||||
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. |