Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    234

    ScrollBar alle PictureBox

    Ciao a tutti. Io ho creato una picture box in cui carico delle immagini tramite delle COMMON DIALOG. Quando però carico delle immagini più grandi rispetto alla picture, queste vengono tagliate...Per questo motivo vorrei che al caricamento di una immagine più grande si attivino le barre di scorrimeno (scroolbar) in modo da poter vedere l'immagine.

    Qual è il codice da inserire?

    Grazie

  2. #2
    Devi fare un subclassing del controllo PictureBox oppure del controllo Image, attraverso API. Devi in sostanza:
    1. avviare un hook alla funzione WindowProc del controllo, utilizzando la funzione SetWindowLong()
    2. impostare la visibilità e i parametri delle due barre di scorrimento, attraverso la funzione API SetScrollInfo()
    3. nella nuova WindowProc, rispondere ai messaggi WM_HSCROLL e WM_VSCROLL in modo da effettuare effettivamente lo scroll nell'area del controllo (utilizzare anche in questo caso SetScrollInfo())
    4. alla chiusura del controllo, ricordarsi di eliminare l'hook impostando il vecchio indirizzo di WindowProc (ancora SetWindowLong())
    Chi non cerca trova.

  3. #3
    Foga27News
    Guest
    Forse è troppo complicato con le API...
    Prova così:

    codice:
    dim img as stdPicture
    
    Sub CaricaImmagine(Percorso as string)
    img=LoadPicture(Percorso)
    Picture1.picture = imd
    
    if img.Height > Picture1.Height then
       VScroll1.visible=true
       VScroll1.Min=0
       Vscroll1.Max= img.Height - Picture1.Height
    else
       VScroll1.visible= false
    end if
    
    if img.width > Picture1.width then
       HScroll1.visible=true
       HScroll1.Min=0
       Hscroll1.Max= img.Width - Picture1.Width
    else
       HScroll1.visible= false
    end if
    End Sub
    
    Private Sub VScroll1_Change()
    Picture1.PaintPicture 0,0,Picture1.Width,Picture1.Height,HScroll1.Value,VScroll1.Value,Picture1.Width, Picture1.Height
    end sub
    
    Private Sub HScroll1_Change()
    Picture1.PaintPicture 0,0,Picture1.Width,Picture1.Height,HScroll1.Value,VScroll1.Value,Picture1.Width, Picture1.Height
    end sub
    Una volta per tutte... :metallica

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.