× Aktuálně z oboru

Programátoři po celém světě dnes slaví Den programátorů [ clanek/2018091300-programatori-po-celem-svete-dnes-slavi-den-programatoru/ ]
Celá zprávička [ clanek/2018091300-programatori-po-celem-svete-dnes-slavi-den-programatoru/ ]

Posuvné grafické okno

[ http://programujte.com/profil/618-jan-maly/ ]Google [ :?rel=author ]       [ http://programujte.com/profil/118-zdenek-lehocky/ ]Google [ ?rel=author ]       13. 10. 2007       15 033×

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 [ clanek/2006021005-Visual-Basic-6.0-Prirucka-programatora ].


Článek stažen z webu Programujte.com [ http://programujte.com/clanek/2007100501-posuvne-graficke-okno/ ].