Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
RISOLUZIONE DELLO SCHERMO vb.net
venerdì 11 marzo 2005 - 15.11
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
nikol84
Profilo
| Junior Member
56
messaggi | Data Invio:
ven 11 mar 2005 - 15:11
Salve ragazzi!!
Il mio problema è che vorrei sapere come ridurre o ingrandire gli oggetti della mia form in base alla risoluzione della macchina. io ho una schermo con una risoluzione 120x768 quando installo i programmi su altre macchine,con risoluzioni diverse,ho problemi perchè a volte gli oggetti non sono ben visibili,utilizzo vb.net 2003
nikol84
Profilo
| Junior Member
56
messaggi | Data Invio:
ven 11 mar 2005 - 18:01
Esistono delle istruzione per ridimensionare i controlli!!per esempio "scale" ma non trovo nessuna documentazione.
alextyx
Profilo
| Expert
668
messaggi | Data Invio:
sab 12 mar 2005 - 16:40
Io uso questo metodo.....funzionicchia benino, almeno con i controlli che ho usato io:
Nell'evento load della form, scrivo:
GIN.SubRidimensiona(Me)
Me.CenterToScreen()
Me.Refresh()
GIN è il nome del progetto. Il metodo pubblico è la SubRidimensiona, cui viene passato il form come parametro. Purtroppo il codice è un po' lunghetto, comunque provo a postarlo:
Public Sub SubRidimensiona(ByRef F As Form)
'If F.Visible = False Then Exit Sub
'Si ricava il rapporto fra dimensione dello schermo e dimensione della form
Dim RO As Single = Classi.RiDimensionaForm.FnzRapportoTraSchermoEForm(F, Classi.RiDimensionaForm.Dimensione.Orizzontale)
Dim RV As Single = Classi.RiDimensionaForm.FnzRapportoTraSchermoEForm(F, Classi.RiDimensionaForm.Dimensione.Verticale)
'Bisogna tenere conto che nel rapporto tra schermo e Form va considerato quello minore tra i due possibili (Vert. e Orizz.)
' altrimenti si rischia di portare al limite corretto l'altezza di una Form e vederne scomparire i lati oltre l'area visibile, o viceversa
Dim R As Single = RV 'Si assegna a RV, tanto per partire con uno
If RO < RV Then 'Poi si controlla se anzichè RV nn sia il caso di considerare RO
R = RO
End If
'Ora si estrae dal file dei settaggi il valore del cofficente in percentuale
Dim Coefficente As Double
'Ottiene il numero associato al nome della chiave presente nella enumerazione
Dim NumeroChiave As Integer = GIN.ChiaviDelFileDiSetup.PERCENTORIDIMENSIONAMENTOFORM
'Dal numero della chiave, se ne ottiene il nome, così come scritto nella enumerazione
Dim Chiave As String = [Enum].GetName(GetType(ChiaviDelFileDiSetup), NumeroChiave)
'Si estrae il valore e lo si assegna a coefficente
If GIN.ScriviLeggiFileDiTesto.ManeggiaValoriSetup.EstraiValoreDellaChiave(Chiave, 0) Then
Coefficente = Chiave
End If
Dim K As Double = Math.Round(Double.Parse(Coefficente / 100), 2) ' Un valore 90, ad esempio, diventa 0.9
If Not ((1 / R) > K - 0.05 And (1 / R) < K + 0.05) Then 'Se il rapporto è già accettabilmente corretto nn si tocca
'altrimenti si riduce un po' la dimensione x nn coprire del tutto lo schermo e si prosegue
R = R * K
Classi.RiDimensionaForm.SubVariaSecondoRapporto(F, R)
End If
End Sub
Ad un certo punto, viene estratto un coefficente dal mio file dei settaggi, ma tu potresti metterlo fisso, magari a 90 (=90% della dimensione dello schermo). Io nn massimizzo le mie form, ma uso espanderle fino a lasciare comunque un po' di desktop visibile intorno! Ora, come vedi, la Subridimensiona usa un metodo shared di una classe. Dato che il metodo è shared, nn serve istanziare la classe., che cerco di passarti qui sotto. Spero tu nn perda il filo, anche se mi rendo conto che, come minimo dovrai divertirti nn poco col copia-incolla! Io l'ho messa nel modilo 'Classi', ovviamente nella chiamata devi sostituire il nome del modulo o dell'eventuale namespace. Comunque, una volta buttato dentro questo codice, puoi ridimensionare qualunque form ed i controlli in essa contenuti, con quelle 3 istruzioncine nell'evento LOAD. Prossimamente penso di ricavarmi una form personalizzata con questa funzione già integrata e trasparente all'utente, insieme ad altre due o tre che ho in mente, ma x adesso nn ho il tempo necessario, ahimè! Buon lavoro :-)
Public Class RiDimensionaForm
Public Shared Function FnzRapportoTraSchermoEForm(ByRef F As Form, ByVal D As Dimensione) As Single
'Restituisce il rapporto tra risoluzione orizzontale dello schermo e
' dimensione orizzontale della Form, oppure fa lo stesso con le componenti verticali.
Dim orizz As Integer
Dim vert As Integer
alextyx
Profilo
| Expert
668
messaggi | Data Invio:
sab 12 mar 2005 - 16:41
Io uso questo metodo.....funzionicchia benino, almeno con i controlli che ho usato io:
Nell'evento load della form, scrivo:
GIN.SubRidimensiona(Me)
Me.CenterToScreen()
Me.Refresh()
GIN è il nome del progetto. Il metodo pubblico è la SubRidimensiona, cui viene passato il form come parametro. Purtroppo il codice è un po' lunghetto, comunque provo a postarlo:
Public Sub SubRidimensiona(ByRef F As Form)
'If F.Visible = False Then Exit Sub
'Si ricava il rapporto fra dimensione dello schermo e dimensione della form
Dim RO As Single = Classi.RiDimensionaForm.FnzRapportoTraSchermoEForm(F, Classi.RiDimensionaForm.Dimensione.Orizzontale)
Dim RV As Single = Classi.RiDimensionaForm.FnzRapportoTraSchermoEForm(F, Classi.RiDimensionaForm.Dimensione.Verticale)
'Bisogna tenere conto che nel rapporto tra schermo e Form va considerato quello minore tra i due possibili (Vert. e Orizz.)
' altrimenti si rischia di portare al limite corretto l'altezza di una Form e vederne scomparire i lati oltre l'area visibile, o viceversa
Dim R As Single = RV 'Si assegna a RV, tanto per partire con uno
If RO < RV Then 'Poi si controlla se anzichè RV nn sia il caso di considerare RO
R = RO
End If
'Ora si estrae dal file dei settaggi il valore del cofficente in percentuale
Dim Coefficente As Double
'Ottiene il numero associato al nome della chiave presente nella enumerazione
Dim NumeroChiave As Integer = GIN.ChiaviDelFileDiSetup.PERCENTORIDIMENSIONAMENTOFORM
'Dal numero della chiave, se ne ottiene il nome, così come scritto nella enumerazione
Dim Chiave As String = [Enum].GetName(GetType(ChiaviDelFileDiSetup), NumeroChiave)
'Si estrae il valore e lo si assegna a coefficente
If GIN.ScriviLeggiFileDiTesto.ManeggiaValoriSetup.EstraiValoreDellaChiave(Chiave, 0) Then
Coefficente = Chiave
End If
Dim K As Double = Math.Round(Double.Parse(Coefficente / 100), 2) ' Un valore 90, ad esempio, diventa 0.9
If Not ((1 / R) > K - 0.05 And (1 / R) < K + 0.05) Then 'Se il rapporto è già accettabilmente corretto nn si tocca
'altrimenti si riduce un po' la dimensione x nn coprire del tutto lo schermo e si prosegue
R = R * K
Classi.RiDimensionaForm.SubVariaSecondoRapporto(F, R)
End If
End Sub
Ad un certo punto, viene estratto un coefficente dal mio file dei settaggi, ma tu potresti metterlo fisso, magari a 90 (=90% della dimensione dello schermo). Io nn massimizzo le mie form, ma uso espanderle fino a lasciare comunque un po' di desktop visibile intorno! Ora, come vedi, la Subridimensiona usa un metodo shared di una classe. Dato che il metodo è shared, nn serve istanziare la classe., che cerco di passarti qui sotto. Spero tu nn perda il filo, anche se mi rendo conto che, come minimo dovrai divertirti nn poco col copia-incolla! Io l'ho messa nel modilo 'Classi', ovviamente nella chiamata devi sostituire il nome del modulo o dell'eventuale namespace. Comunque, una volta buttato dentro questo codice, puoi ridimensionare qualunque form ed i controlli in essa contenuti, con quelle 3 istruzioncine nell'evento LOAD. Prossimamente penso di ricavarmi una form personalizzata con questa funzione già integrata e trasparente all'utente, insieme ad altre due o tre che ho in mente, ma x adesso nn ho il tempo necessario, ahimè! Buon lavoro :-)
Public Class RiDimensionaForm
Public Shared Function FnzRapportoTraSchermoEForm(ByRef F As Form, ByVal D As Dimensione) As Single
'Restituisce il rapporto tra risoluzione orizzontale dello schermo e
' dimensione orizzontale della Form, oppure fa lo stesso con le componenti verticali.
Dim orizz As Integer
Dim vert As Integer
alextyx
Profilo
| Expert
668
messaggi | Data Invio:
sab 12 mar 2005 - 16:44
Io uso questo metodo.....funzionicchia benino, almeno con i controlli che ho usato io:
Nell'evento load della form, scrivo:
GIN.SubRidimensiona(Me)
Me.CenterToScreen()
Me.Refresh()
GIN è il nome del progetto. Il metodo pubblico è la SubRidimensiona, cui viene passato il form come parametro. Purtroppo il codice è un po' lunghetto, comunque provo a postarlo:
Public Sub SubRidimensiona(ByRef F As Form)
'If F.Visible = False Then Exit Sub
'Si ricava il rapporto fra dimensione dello schermo e dimensione della form
Dim RO As Single = Classi.RiDimensionaForm.FnzRapportoTraSchermoEForm(F, Classi.RiDimensionaForm.Dimensione.Orizzontale)
Dim RV As Single = Classi.RiDimensionaForm.FnzRapportoTraSchermoEForm(F, Classi.RiDimensionaForm.Dimensione.Verticale)
'Bisogna tenere conto che nel rapporto tra schermo e Form va considerato quello minore tra i due possibili (Vert. e Orizz.)
' altrimenti si rischia di portare al limite corretto l'altezza di una Form e vederne scomparire i lati oltre l'area visibile, o viceversa
Dim R As Single = RV 'Si assegna a RV, tanto per partire con uno
If RO < RV Then 'Poi si controlla se anzichè RV nn sia il caso di considerare RO
R = RO
End If
'Ora si estrae dal file dei settaggi il valore del cofficente in percentuale
Dim Coefficente As Double
'Ottiene il numero associato al nome della chiave presente nella enumerazione
Dim NumeroChiave As Integer = GIN.ChiaviDelFileDiSetup.PERCENTORIDIMENSIONAMENTOFORM
'Dal numero della chiave, se ne ottiene il nome, così come scritto nella enumerazione
Dim Chiave As String = [Enum].GetName(GetType(ChiaviDelFileDiSetup), NumeroChiave)
'Si estrae il valore e lo si assegna a coefficente
If GIN.ScriviLeggiFileDiTesto.ManeggiaValoriSetup.EstraiValoreDellaChiave(Chiave, 0) Then
Coefficente = Chiave
End If
Dim K As Double = Math.Round(Double.Parse(Coefficente / 100), 2) ' Un valore 90, ad esempio, diventa 0.9
If Not ((1 / R) > K - 0.05 And (1 / R) < K + 0.05) Then 'Se il rapporto è già accettabilmente corretto nn si tocca
'altrimenti si riduce un po' la dimensione x nn coprire del tutto lo schermo e si prosegue
R = R * K
Classi.RiDimensionaForm.SubVariaSecondoRapporto(F, R)
End If
End Sub
Ad un certo punto, viene estratto un coefficente dal mio file dei settaggi, ma tu potresti metterlo fisso, magari a 90 (=90% della dimensione dello schermo). Io nn massimizzo le mie form, ma uso espanderle fino a lasciare comunque un po' di desktop visibile intorno! Ora, come vedi, la Subridimensiona usa un metodo shared di una classe. Dato che il metodo è shared, nn serve istanziare la classe., che cerco di passarti qui sotto. Spero tu nn perda il filo, anche se mi rendo conto che, come minimo dovrai divertirti nn poco col copia-incolla! Io l'ho messa nel modilo 'Classi', ovviamente nella chiamata devi sostituire il nome del modulo o dell'eventuale namespace. Comunque, una volta buttato dentro questo codice, puoi ridimensionare qualunque form ed i controlli in essa contenuti, con quelle 3 istruzioncine nell'evento LOAD. Prossimamente penso di ricavarmi una form personalizzata con questa funzione già integrata e trasparente all'utente, insieme ad altre due o tre che ho in mente, ma x adesso nn ho il tempo necessario, ahimè! Buon lavoro :-)
Public Class RiDimensionaForm
Public Shared Function FnzRapportoTraSchermoEForm(ByRef F As Form, ByVal D As Dimensione) As Single
'Restituisce il rapporto tra risoluzione orizzontale dello schermo e
' dimensione orizzontale della Form, oppure fa lo stesso con le componenti verticali.
Dim orizz As Integer
Dim vert As Integer
alextyx
Profilo
| Expert
668
messaggi | Data Invio:
sab 12 mar 2005 - 16:46
Uhmmmm....ho tentato di postare una soluzione, evidentemente troppo lunga ed il servere me la rifiuta. Ho tentato di allegarla come file .txt, ma nn mi accetta la selezione del path! Se mi posti un indirizzo e-mail, ti spedisco la mia proposta, con tutto il codice!
kontimatteo
Profilo
| Newbie
12
messaggi | Data Invio:
mar 11 set 2007 - 08:44
Ciao, potresti inviare anche a me il codice del resize che utilizzi in vb.net? Ti ringrazio
Oppure comunque quello che hai postato qui è comunque tutto il codcie?
DomA
Profilo
| Expert
537
messaggi | Data Invio:
mer 1 ott 2008 - 16:35
ciao alex,
io ho lo stesso problema mi potresti inviare la solozione al post. La mia mail è m.doom21@gmail.com
Domenico
cippico
Profilo
| Newbie
10
messaggi | Data Invio:
sab 25 lug 2009 - 10:00
sto cercando anch'io qualcosa di simile che adegui i miei programmi. se puoi inviarmi il codice la mia e mail è capezzati@tin.it. grazie
magicofrate
Profilo
| Newbie
1
messaggi | Data Invio:
lun 10 mag 2010 - 18:00
potresti postarlo anche a me. la mia mail è
alex.fratini@riscali.it
argento01
Profilo
| Newbie
7
messaggi | Data Invio:
gio 4 ott 2012 - 13:15
sto cercando anch'io qualcosa di simile se puoi inviarmi il codice la mia e mail è argento01@libero.it
Grazie
DomA
Profilo
| Expert
537
messaggi | Data Invio:
gio 4 ott 2012 - 15:55
Ciao,
non hai bisogno di alcun codice devi solo agire sulle proprietà anchor e dock dei controlli.
Ricorda che, accettare la risposta è un modo di ringraziare chi ci ha aiutato ed evidenziare che il problema è stato risolto.
http://www.infomidia.it
Domenico
alextyx
Profilo
| Expert
668
messaggi | Data Invio:
gio 4 ott 2012 - 20:06
La soluzione di Doma, mi sembra abbastanza gettonata e credo di aver guardato qualcosa anch'io in quel senso, ma mi pareva ci fossero delle controindicazioni, tipo che in certe condizioni i controlli si sovrappongono o comunque non vengono mantenute certe proporzioni, magari sulle distanze tra i controlli. Comunque, se mi ricordo male, o se comunque quella soluzione fa al caso tuo, chiusa qui, altrimenti do un'occhiata per vedere a che punto ho lasciato quel codice, visto che è passato qualche annetto :)
DomA
Profilo
| Expert
537
messaggi | Data Invio:
gio 4 ott 2012 - 20:20
Ciao alextyx ,
ci vuole un po' ma se usate anchor e dock danno risultati soddisfacenti
cmq se postassi ancora la suoluzione sarebbe interessante...
http://www.infomidia.it
Domenico
alextyx
Profilo
| Expert
668
messaggi | Data Invio:
gio 4 ott 2012 - 21:01
Ciao Doma...non spingere;) Se basta la tua, non sto a riaprire vecchi progetti. Sono pigro io! :)
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !