Mitenkä saan laitettua vierityspalkin toimimaan pictureboksissa? eli kuva on isompi korkeus suunnassa kuin pictureboksi, joten alas ja ylöspäin tarvisi kuvaa saada vieritettyä? Mitä pictureboksin arvoa tarvii muuttaa?
Yksi vaihtoehto on tietysti tehdä jotain tähän tyyliin:
Lisäile sinne Vscrolli ja sovella seuraavaa koodia:
Private Sub Form_Load() VScroll1.Max = Picture1.ScaleHeight End Sub Private Sub VScroll1_Scroll() Picture1.Top = 0 - VScroll1.Value End Sub
Hieman täsmennettynä. Picturboxin oltava korkeudeltaan sama kuin kuva eli kuvan tulee mahtua kokonaisuudessaan pictureboxiin. osa pictureboxista jää formin ulkopuolelle näkymättömiin. Nyt voit scrollata pictureboxia nomicin koodin mukaan paitsi:
Private Sub Form_Load() VScroll1.Max = Picture1.Height-Me.ScaleHeight End Sub Private Sub VScroll1_Scroll() Picture1.Top = 0 - VScroll1.Value End Sub
Kuvaa voi siirtää myös suoraan hiirellä ilman ScrollBaria säätämällä Top-ominaisuutta suoraan hiiren Move-tapahtumalla. Koodi ollut ennenkin täällä, mutten muista missä. Jos et löydä tai keksi voin kirjoittaa uudelleen.
Jos tahdot päästä helpommalla, niin sekin onnistuu. Tätä kysyttiin (ja kysytään edelleen) VBForumsilla niin törkeän paljon, että kirjoitin kontrollin joka tekee tämän ja vähän muutakin. Planet Source Code tarjoilee koodin, projektiin mukaanotto onnistuu lisäämällä kaksi tiedostoa mukaan omaan projektiin: PictureView.ctl ja cJpeg.cls. Jälkimmäinen tiedosto mahdollistaa siis JPEG-kuvien tallentamisen. Tiedostojen lisäämisen jälkeen kontrollipalkkiin ilmestyy PictureView, jonka voi lisätä formille.
Kontrolli siis osaa siirtää kuvaa pelkän skrollin lisäksi hiiren näppäimen avulla. Yksinkertaisen piirto-ohjelmankin pitäisi onnistua.
Picture ei itessään liiku,vaan se piirtä sisällä olevaa kuvaa vain erikohtaan..
Piirrä formiin Picture1, Image1 ja VScroll1
Aseta Image1:n haluamasi kuva.
Private Sub Form_Load()
VScroll1.Max = Image1.Height - Picture1.Height
End Sub
Private Sub VScroll1_Change()
Picture1.Cls
Picture1.PaintPicture Image1.Picture, 0, -VScroll1.Value
End Sub
-Image1 Visible False
-Picture1 Autoredraw True
Pictureboxi liikkuu kyllä paljon jouhevammin kuin kuvan piirto aina uudelleen ja uudelleen ja koodikin on huomattavasti lyhyempi.
Aihe on jo aika vanha, joten et voi enää vastata siihen.