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
.NET Framework
Dimensione Form
domenica 14 giugno 2009 - 22.51
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
anallie0
Profilo
| Newbie
20
messaggi | Data Invio:
dom 14 giu 2009 - 22:51
Ciao a tutti
Ho un dubbio:
se realizzo un form per un pocket con risoluzione 240x320 questo ha una dimensione di 240x 268, se lo stesso form lo carico su un dispositivo con risoluzione superiore, questo mantiene le stesse dimensioni o si adatta allo schermo.
grazie
Angelo A.
freeteo
Profilo
| Guru
6.542
messaggi | Data Invio:
lun 15 giu 2009 - 10:39
Ciao,
le dimensioni sono in pixel quindi di fatto sono fisse.
Potrebbe essere il dispositivo a fare qualcosa di adattamento o similari, ma non credo che avvenga...piuttosto se imposti la maschera come maximized allora in quel caso ovviamente windows lo adatta alle dimensioni, e mettendo i controlli "ancorati" (proprietà Anchor) si ridimensionerebbero.
Un comportamento grafico non a pixel, ma a "punti" quindi di fatto vettoriale, ce l'hai con WPF ma non credo sia la tua situazione...
Ciao.
Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo
anallie0
Profilo
| Newbie
20
messaggi | Data Invio:
lun 15 giu 2009 - 11:32
ti ringrazio della risposta, vedo se riesco a farmi prestare un palmare con risoluzione diversa dal mio che uso per testare le applicazioni. Questo perchè vorrei scrivere un algoritmo per adattare in automatico le mie applicazioni a tutte le risoluzioni sfruttando le dimensioni del form.
Angelo A.
freeteo
Profilo
| Guru
6.542
messaggi | Data Invio:
lun 15 giu 2009 - 11:50
Ciao,
la cosa più comoda, già inclusa nel framework, è sicuramente lavorare con le proprietà "Anchor" dei controlli, in modo da far un adattamento "intelligente" della form al relativo resize.
Altrimenti puoi pensare di farlo da codice ma è cmq qualcosa di laborioso e non so quanto ti convenga, dato che cmq qualcosa ha senso che venga ingrandito ed altro no, ad esempio i bottoni che a mio avviso non ha mai senso ridimensionarli al risize della form, piuttosto lasciare la parte centrale, liste, griglie o altro che ha senso "cresca con lo schermo" ...
Ciao.
Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo
anallie0
Profilo
| Newbie
20
messaggi | Data Invio:
lun 15 giu 2009 - 13:24
ciao
è vero però con l'ancor i punti rimangono fissi, perciò se ho un contollo al centro tipo (40;20) questi resteranno = anche ad altre risoluzioni e se ancoro l'oggetto a 3 punti questo si deforma, e non sempre è gradito. Con un algoritmo che mi determina il rapporto tra la mia form e una ipotetica di grandezza diversa, potrei con una sola istruzione mantenere in centro il mio oggetto. Tanto bisogna quasi sempre gestire il resize per colpa della rotazione dello schermo perciò dire System.Drawing.Point(19, 13) o System.Drawing.Point(19*x, 13*x) non mi cambia la vita.Sinceramente ritengo una rottura il fatto di gestire sempre sta cavolo di rotazione e non ne ho mai trovato sti gran benefici Mah!. Ne approfitto per chiederti se esistono in VB istruzioni che bloccano la rotazione, e tutto sarebbe + semplice a livello di disegno del form.
grazie
Angelo A.
anallie0
Profilo
| Newbie
20
messaggi | Data Invio:
dom 21 giu 2009 - 18:13
OK funziona, in effetti il form si adatta alla risoluzione dello schermo. Ho fatto la prova utilizzando il rapporto tra le due risoluzioni (reale/progetto) e applicandolo alle coordinate degli oggetti, questi mantengono le posizioni originali impostate. Unica cosa è che le immagini devono avere la proprietà ImageLayout.Stretch in modo che si adattano alla risoluzione e devono essere della dimensione esatta della PictureBox.
Angelo A.
freeteo
Profilo
| Guru
6.542
messaggi | Data Invio:
dom 21 giu 2009 - 18:46
Ciao,
come hai risolto allora, Anchor o hai fatto lo scale tu a mano delle dimensioni?
Parlavi di "rotazione", qualcosa simile all'IPhone che gira tra portrait-landscape? in questo caso è il dispositivo che fa questa "rotazione" quindi credo sia qualcosa di relativo a lui, più che da codice...
Ciao.
Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo
anallie0
Profilo
| Newbie
20
messaggi | Data Invio:
dom 21 giu 2009 - 23:57
Ciao
Si ho fatto tutto da codice, utilizzando il rapporto calcolato tra il form reale e quello utilizzato durante la progettazione. Praticamente leggo i valori delle dimensioni del form( che viene automaticamente adattato dal sistema), lo divido per la dimensione che ho utilizzato nel progetto e il risultato lo uso per scalare le coordinate degli oggetti.Praticamente dovrebbe funzionare per tutte le risoluzioni a patto che siano superiori o = a quella di progettazione.
Private Sub Form6_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Resize
'lbv larghezza base verticale, abv altezza base verticale, abo idem orrizzontale,lx larghezza anonima
Dim lbv, abv, lx, ax, lbo, abo As Integer
'imposta nelle variabili larghezza e altezza corrente del form
lx = Me.Width
ax = Me.Height
'stabilisce il rapporto tra form reale e quello progettato che è di risoluzione 240x320
'le misure sono riferite al form e non allo schermo
lbv = lx / 240
abv = ax / 268
lbo = lx / 320
abo = ax / 188
If Screen.PrimaryScreen.Bounds.Height > Screen.PrimaryScreen.Bounds.Width Then
' Orientamento verticale
Me.PictureBox1.Location = New System.Drawing.Point(62 * lbv, 25 * abv)
ecc.
Else
' Orientamento orizzontale
Me.PictureBox1.Location = New System.Drawing.Point(19 * lbo, 13 * abo)
ecc.
End If
End Sub
Angelo A.
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 !