Využití ovládacích prvků ScrollBar a PictureBox.
Bohužel ovládací prvek PictureBox (ani Image) nám neumožňuje posun obrázku, který přesahuje jeho velikost. Proto využijeme dvou ScrollBarů a dvou PictureBoxů, abychom si takové grafické okénko udělali.
Začneme tedy s rozmisťováním ovládacích prvků. Vložte si na formulář PictureBox1 a do něj vložte PictureBox2. Na formulář poté umístěte jeden HScrollBar a jeden VScrollBar (to jsou ty posuvníky).
Když už máme rozmístěno, pustíme se do psaní zdrojového kodu. Nejprve začneme procedurou Form_Load():
Private Sub Form_Load()
'Nastavíme na pixely
Form1.ScaleMode = vbPixels
Picture1.ScaleMode = vbPixels
'Velikost se upraví podle velikosti obrázku
Picture2.AutoSize = True
'Odstraníme rámeček u obou PictureBoxů
Picture1.BorderStyle = 0
Picture2.BorderStyle = 0
'Načteme obrázek (nejlépe nějaký hodně veliký)
Picture2.Picture = LoadPicture("cesta_k_obrazku")
'Umístíme oba PictureBoxy
Picture1.Move 0, 0, ScaleWidth - VScroll1.Width, ScaleHeight - HScroll1.Height
Picture2.Move 0, 0
'Umístíme vodorovný (horizontální) posuvník
HScroll1.Top = Picture1.Height
HScroll1.Left = 0
HScroll1.Width = Picture1.Width
'Umístíme svislý (vertikální) posuvník
VScroll1.Top = 0
VScroll1.Left = Picture1.Width
VScroll1.Height = Picture1.Height
'Nastavíme maximální hodnoty posuvníků
HScroll1.Max = Picture2.Width - Picture1.Width
VScroll1.Max = Picture2.Height - Picture1.Height
'Určí zda jsou potřeba posuvníky
VScroll1.Visible = (Picture1.Height < Picture2.Height)
HScroll1.Visible = (Picture1.Width < Picture2.Width)
End Sub
Nyní se budeme věnovat posuvníkům. Do procedury HScroll1_Change napište Picture2.left = -HScroll.value
a do procedury VScroll1_Change umístěte Picture2.top = -VScroll1.value
, díky tomu budem moci pohybovat s obrázkem správným způsobem.
Private Sub HScroll1_Change()
Picture2.Left = -HScroll1.Value
End Sub
Private Sub VScroll1_Change()
Picture2.Top = -VScroll1.Value
End Sub
Stále má náš prográmek malou chybu, neroztáhne se nám to po celém formuláři. To ihned opravíme, když do procedury Form_Resize napíšeme následující řádky kódu:
Private Sub Form_Resize()
Form1.ScaleMode = vbPixels
Picture1.ScaleMode = vbPixels
Picture1.Move 0, 0, ScaleWidth - VScroll1.Width, ScaleHeight - HScroll1.Height
Picture2.Move 0, 0
HScroll1.Top = Picture1.Height
HScroll1.Left = 0
HScroll1.Width = Picture1.Width
VScroll1.Top = 0
VScroll1.Left = Picture1.Width
VScroll1.Height = Picture1.Height
HScroll1.Max = Picture2.Width - Picture1.Width
VScroll1.Max = Picture2.Height - Picture1.Height
VScroll1.Visible = (Picture1.Height < Picture2.Height)
HScroll1.Visible = (Picture1.Width < Picture2.Width)
End Sub
Tak to je pro dnešek vše. Tento postup jsem se dříve naučil z jedné knihy; pokud vás zajímá z které, přečtěte si následující recenzi od Sunmaye.