Start / Tipps / VB 5/6-Tipp 0075: Scrollen einer PictureBox
 
Startseite Up-/Download Tutorials Club Das Team
Rubriken Foren Bücher Tips 'n Tricks Suche


VB 5/6-Tipp 0075: Scrollen einer PictureBox


Zeigt wie mit einfachen Mitteln oben besagter Effekt zu erzielen ist.

Schwierigkeitsgrad 1 Verwendete API-Aufrufe:
keine
Download des Beispielprojektes Download des Beispielprojektes [22,72 KB]
'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Projekt1.vbp -------------
' Es muss ein Verweis auf 'Microsoft DAO 2.5/3.0 Compatibility Library' gesetzt werden.

'--------- Anfang Formular "Form1" alias Form1.frm  ---------
' Steuerelement: Horizontale Scrollbar "HScroll1"
' Steuerelement: Vertikale Scrollbar "VScroll1"
' Steuerelement: Bildfeld-Steuerelement "Picture1"
' Steuerelement: Bildfeld-Steuerelement "Picture2" auf Picture1

Option Explicit

Private Sub Form_Load()
  Picture2.Left = 0
  Picture2.Top = 0
  VScroll1.LargeChange = Picture1.Height / 4
  VScroll1.SmallChange = 120
  HScroll1.LargeChange = Picture1.Width / 4
  HScroll1.SmallChange = 120
End Sub

Private Sub Command1_Click()
  Unload Me
End Sub

Private Sub HScroll1_Change()
  Picture2.Left = -HScroll1.Value
End Sub

Private Sub VScroll1_Change()
  Picture2.Top = -VScroll1.Value
End Sub

Private Sub HScroll1_Scroll()
  Picture2.Left = -HScroll1.Value
End Sub

Private Sub VScroll1_Scroll()
  Picture2.Top = -VScroll1.Value
End Sub
'---------- Ende Formular "Form1" alias Form1.frm  ----------
'-------------- Ende Projektdatei Projekt1.vbp --------------
Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?
Ja, funktioniert! Windows-Version:
Nein, funktioniert nicht bei mir! VB-Version:

Ihre Meinung

Falls Sie Fragen zu oder Erfahrungen mit diesem Tipp haben, dann sollten Sie diese hier posten. Für alles weitere melden Sie sich bitte in einem zum Thema passendem Forum.

Falls Sie in ihren Kommentar Quellcode einbinden wollen, verwenden Sie bitte Pseudotags: Quellcode für VB5/VB6 wird durch ein vorangestelltes [code] markiert und durch [/code] abgeschlossen.

Ihr Name:   
Ihre E-Mailadresse:   
 
Bitte folgende Kontrollnummer eingeben: 1431
Kontrolle:   
 
Ihre Frage/Ihr Kommentar:
Ja, ich möchte weitere Beiträge per E-Mail erhalten
Von Elio Gubser am 25.03.2006 um 20:06
Theoretisch könnte man ein zweites Picture böxchen nehmen und die Grafik dort hineinladen, visible = false. Jetzt zeichnet man mit BitBlt den momentan sichtbaren Grafikausschnitt
Von DonDave am 24.09.2004 um 01:48
Mahlzeit!

Mich stört an diesem Beispiel, dass zwei Pictureboxen benötigt werden. Mein Beispiel scrollt und zoomt mit

-einer Picturebox, Name: "Picture1"
-einer VScrollbar, Name: "VScroll1"
-zwei HScrollBar, Namen: "HScroll1" und "HScroll2"

HScroll1 und VScroll1 scrollen das Bild horizontal und vertikal, HScroll2 stellt den Zoomfaktor ein.

Kennt jemand eine Möglichkeit, die echten Abmessungen (in Pixeln) eines Bildes zu finden ohne auf die WinAPI zurückzugreifen?

Option Explicit

Private Declare Function GetObject Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As Long

Private Type BITMAP
bmType As Long
bmWidth As Long
bmHeight As Long
bmWidthBytes As Long
bmPlanes As Integer
bmBitsPixel As Integer
bmBits As Long
End Type

Private mBmp As BITMAP

Private Sub Form_Load()
Dim temp As Long

With Picture1
.ScaleMode = 3
.Picture = LoadPicture("Test.bmp") 'Test.bmp durch einen
'echten Dateinamen 'ersetzen
temp = GetObject(.Picture, Len(mBmp), mBmp)
.PaintPicture .Picture, 0, 0, _
.ScaleWidth, .ScaleHeight, _
0, 0, _
.ScaleWidth, .ScaleHeight, _
vbSrcCopy
HScroll1.Min = 0
HScroll1.Max = mBmp.bmWidth - .ScaleWidth
HScroll2.Min = 1 ' sonst Division durch Null
HScroll2.Max = 8 ' maximal 8-fach Zoom
VScroll1.Min = 0
VScroll1.Max = mBmp.bmHeight - .ScaleHeight
End With
End Sub

Private Sub HScroll1_Change()
With Picture1
.PaintPicture .Picture, _
0, 0, _
.ScaleWidth, .ScaleHeight, _
HScroll1.Value, VScroll1.Value, _
.ScaleWidth / HScroll2.Value, .ScaleHeight / HScroll2.Value, _
vbSrcCopy
End With
End Sub

Private Sub HScroll1_Scroll()
HScroll1_Change
End Sub

Private Sub HScroll2_Change()
HScroll1_Change
End Sub

Private Sub VScroll1_Change()
HScroll1_Change
End Sub

Private Sub VScroll1_Scroll()
HScroll1_Change
End Sub
Von Jörg am 13.05.2002 um 16:13
Okay, ich habs schon selbst rausgefunden. Hier für alle anderen:
If Picture1.ScaleWidth
Von Jörg am 09.05.2002 um 15:41
Wir funktioniert das mit der Max-Eigenschaft des Scrollbalkens. Wenn ich ein Bild in der pictureBox lade kann ich über die Bildgröße hinausscrollen. Also wie muss ich die Max Eigenschaft setzen hscroll1.max=picture2.width funktioniert nicht). Bitte helft mir.
Von Stephan am 22.07.2001 um 13:46
Hi,
ich hätte es nicht schlecht gefunden, wenn der Author des Tips die Max Eigenschaft des Scrollbalkens erwähnt hätte.
Ansonsten war der Tip gut :)
Gruß
Stephan
Von Sven am 18.05.2001 um 14:29
Das bringt, dass man auch auf den Gubbel (oder wie das heisst) von der Scrolleiste Scrollen kann, ohne die Maustaste loszulassen.
Von Pösch am 23.01.2001 um 17:00
??? Und was bringts? Ich würd viel lieber das Bild in der Picturebox scrollen und nicht die Picturebox! Ne Picturebox (in der Größe des Bildes) in 'nem Frame ohne Caption, is nicht grad das Optimum, aber das einzige was mir einfällt...
Von Sven am 26.11.2000 um 15:12
Eigentlich fehlt ja noch:
Private Sub HScroll1_Scroll()
Picture2.Left = -HScroll1.Value
End Sub
Private Sub VScroll1_Scroll()
Picture2.Top = -VScroll1.Value
End Sub
Damit das Bild auch scrollt, wenn man auf den Regler klickt und ihn hin und her zieht.

Erstellt: 15.06.2003
Aktualisierung: 15.06.2003
  Autor: ActiveVB
E-Mail: Tipps@ActiveVB.de



Copyright © 1998-2010 by ActiveVB
Alle Rechte vorbehalten.