Come posso mostrare le barre di scorrimento su un controllo PictureBox?
-
10-10-2019 - |
Domanda
A volte, ho un picturebox diciamo 100x100. Ma l'immagine che verrà visualizzata in realtà è 100x400.
Non voglio aumentare le dimensioni del picturebox stesso. Invece, mi piacerebbe creare una barra di scorrimento verticale (o orizzontale se necessario).
non ho potuto trovare una barra di scorrimento nella casella degli strumenti, quindi credo che devo codice di esso. Ma come? E mi chiedo ancora se non ho fatto un errore e non ho visto la barra di scorrimento nella casella degli strumenti. Le mie scuse quindi: (
Soluzione
I supporti potrebbero aggiungere controlli ScrollBar separati e sincronizzare i loro eventi Scroll
con l'offset in cui l'immagine nel PictureBox
è tratto, ma che suona come lavoro effettivo. C'è un modo migliore.
-
Aggiungi un controllo
Panel
al modulo, e impostare ilAutoScroll
proprietà su 'true'. Questo farà sì che il controllo di mostrare automaticamente le barre di scorrimento quando contiene il contenuto che si trova al di fuori dei suoi confini visibili attualmente. Il .NET Framework si prenderà cura di tutto per voi sotto le coperte, senza dover scrivere una sola riga di codice. -
Trascinare vostro interno di controllo
PictureBox
del controlloPanel
appena aggiunto. Il controlloPanel
poi rilevare che uno dei suoi controlli figlio è più grande la sua area e mostrare visibili le barre di scorrimento , grazie alla proprietàAutoScroll
. Quando l'utente sposta le barre di scorrimento, la porzione di immagine nel vostroPictureBox
che è visibile viene regolato automaticamente. Magia.
(La ragione per cui è necessario utilizzare un controllo Panel
come contenitore è perché PictureBox
non eredita direttamente dal ScrollableControl
classe di base, che è ciò che fornisce la proprietà AutoScroll
.)
Altri suggerimenti
Ho provato questo e ha funzionato bene. Ma ho notato che se il picturebox è inserito nel pannello, il picturebox viene impostato automaticamente alle dimensioni del pannello genitore, e non può essere impostata più grande (almeno non in alcun modo ho potuto trovare). Ciò contrasta con l'obiettivo della tecnica. Così -. Mettere il picturebox sul pannello, ma non ancorarla, e funzionerà perfettamente
Non ci sono barre di scorrimento automatico su una finestra di immagine, ma è possibile aggiungere il VScrollBar (e HScrollBar) controllo al form e gestire l'immagine di scorrimento manualmente ridisegnando in un secondo diverso di offset ogni volta che l'evento di scorrimento è sparato.