17/01/11 10:33
poeo85
il tuo problema sta qua
ht = qqh - (qqh - Image1.Height)
ll = qqw - (qqw - Image1.Width)
perchè
poni un valore alla dimensione del form
es: ht = 35000 - 35000+ 1500 = ????? 1500 ossia il tuo valore
inoltre hai invertito height col width
Image1.Width = ht
Image1.Height = ll
se devi adattarti alla dimensione del form prova
<code>
If Form1.Height - Image1.Top - 450 > 0 Then
Image1.Height = Form1.Height - Image1.Top - 450
End If
If Form1.Width - Image1.Left - 450 > 0 Then
Image1.Width = Form1.Width - Image1.Left - 450
End If
Label1.Caption = Form1.Width & " " & Form1.Height
<\code>
dentro al resize, dove il 450 è il valore di una costante perchè l'image sia distante dal bordo del form...se ci son problemi scrivi pure
ht = qqh - (qqh - Image1.Height)
ll = qqw - (qqw - Image1.Width)
perchè
poni un valore alla dimensione del form
es: ht = 35000 - 35000+ 1500 = ????? 1500 ossia il tuo valore
inoltre hai invertito height col width
Image1.Width = ht
Image1.Height = ll
se devi adattarti alla dimensione del form prova
<code>
If Form1.Height - Image1.Top - 450 > 0 Then
Image1.Height = Form1.Height - Image1.Top - 450
End If
If Form1.Width - Image1.Left - 450 > 0 Then
Image1.Width = Form1.Width - Image1.Left - 450
End If
Label1.Caption = Form1.Width & " " & Form1.Height
<\code>
dentro al resize, dove il 450 è il valore di una costante perchè l'image sia distante dal bordo del form...se ci son problemi scrivi pure
aaa
17/01/11 19:12
visualrenzo
Adesso sono andato un po' avanti grazie al tuo aiuto,
Ho scritto questo:
Dim qqh, qqw, ht, ll As Integer
Dim ml_DimHeight As Long
Dim ml_DimWidth As Long
Private Sub Form_Load()
Form1.Height = Screen.Height '* 0.9
Form1.Width = Screen.Width '* 0.9
ml_DimHeight = Screen.Height '* 0.9
ml_DimWidth = Screen.Width '* 0.9
Image1.Width = 945
Image1.Height = 1155
Image2.Width = 945
Image2.Height = 1155
Image3.Width = 945
Image3.Height = 1155
Image4.Width = 945
Image4.Height = 1155
End Sub
Private Sub Form_Resize()
'image 2
If ml_DimHeight > 0 Then
Image1.Height = Image1.Height * (Form1.Height / ml_DimHeight)
Image2.Height = Image2.Height * (Form1.Height / ml_DimHeight)
Image3.Height = Image3.Height * (Form1.Height / ml_DimHeight)
Image4.Height = Image4.Height * (Form1.Height / ml_DimHeight)
End If
If ml_DimWidth > 0 Then
Image1.Width = Image1.Width * (Form1.Width / ml_DimWidth)
Image2.Width = Image2.Width * (Form1.Width / ml_DimWidth)
Image3.Width = Image3.Width * (Form1.Width / ml_DimWidth)
Image4.Width = Image4.Width * (Form1.Width / ml_DimWidth)
End If
Image1.Left = 0
Image1.Top = 0
Image2.Left = 0
Image2.Top = ml_DimHeight - Image2.Height + 100
Image3.Left = ml_DimWidth - Image3.Height + 100
Image3.Top = 0
Image4.Left = ml_DimWidth - Image4.Height
Image4.Top = ml_DimHeight - Image4.Width
ml_DimHeight = Form1.Height
ml_DimWidth = Form1.Width
end sub
Vorrei che ridimensionando il form le 4 immaggini mi rimangono sempre ai 4 vertici del form ridimensionandosi sempre in %.
Sembra funzionare la 1° in alto a sx le altre un po' meno.
Dove sbaglio ?
Ho scritto questo:
Dim qqh, qqw, ht, ll As Integer
Dim ml_DimHeight As Long
Dim ml_DimWidth As Long
Private Sub Form_Load()
Form1.Height = Screen.Height '* 0.9
Form1.Width = Screen.Width '* 0.9
ml_DimHeight = Screen.Height '* 0.9
ml_DimWidth = Screen.Width '* 0.9
Image1.Width = 945
Image1.Height = 1155
Image2.Width = 945
Image2.Height = 1155
Image3.Width = 945
Image3.Height = 1155
Image4.Width = 945
Image4.Height = 1155
End Sub
Private Sub Form_Resize()
'image 2
If ml_DimHeight > 0 Then
Image1.Height = Image1.Height * (Form1.Height / ml_DimHeight)
Image2.Height = Image2.Height * (Form1.Height / ml_DimHeight)
Image3.Height = Image3.Height * (Form1.Height / ml_DimHeight)
Image4.Height = Image4.Height * (Form1.Height / ml_DimHeight)
End If
If ml_DimWidth > 0 Then
Image1.Width = Image1.Width * (Form1.Width / ml_DimWidth)
Image2.Width = Image2.Width * (Form1.Width / ml_DimWidth)
Image3.Width = Image3.Width * (Form1.Width / ml_DimWidth)
Image4.Width = Image4.Width * (Form1.Width / ml_DimWidth)
End If
Image1.Left = 0
Image1.Top = 0
Image2.Left = 0
Image2.Top = ml_DimHeight - Image2.Height + 100
Image3.Left = ml_DimWidth - Image3.Height + 100
Image3.Top = 0
Image4.Left = ml_DimWidth - Image4.Height
Image4.Top = ml_DimHeight - Image4.Width
ml_DimHeight = Form1.Height
ml_DimWidth = Form1.Width
end sub
Vorrei che ridimensionando il form le 4 immaggini mi rimangono sempre ai 4 vertici del form ridimensionandosi sempre in %.
Sembra funzionare la 1° in alto a sx le altre un po' meno.
Dove sbaglio ?
Ultima modifica effettuata da visualrenzo 30/01/11 11:11
aaa
18/01/11 8:17
poeo85
ciao ...se vuoi prova questo
Dim ml_DimHeight As Long
Dim ml_DimWidth As Long
Private Sub Form_Load()
Form1.Width = 15480
Form1.Height = 11190
Image1.Width = 1500
Image1.Height = 1500
ml_DimHeight = Form1.Height
ml_DimWidth = Form1.Width
End Sub
Private Sub Form_Resize()
If ml_DimHeight > 0 Then
Image1.Height = Image1.Height * (Form1.Height / ml_DimHeight)
End If
If ml_DimWidth > 0 Then
Image1.Width = Image1.Width * (Form1.Width / ml_DimWidth)
End If
ml_DimHeight = Form1.Height
ml_DimWidth = Form1.Width
End Sub
non ti resta che adattarlo...ora si restringe proporzionalmente...
Dim ml_DimHeight As Long
Dim ml_DimWidth As Long
Private Sub Form_Load()
Form1.Width = 15480
Form1.Height = 11190
Image1.Width = 1500
Image1.Height = 1500
ml_DimHeight = Form1.Height
ml_DimWidth = Form1.Width
End Sub
Private Sub Form_Resize()
If ml_DimHeight > 0 Then
Image1.Height = Image1.Height * (Form1.Height / ml_DimHeight)
End If
If ml_DimWidth > 0 Then
Image1.Width = Image1.Width * (Form1.Width / ml_DimWidth)
End If
ml_DimHeight = Form1.Height
ml_DimWidth = Form1.Width
End Sub
non ti resta che adattarlo...ora si restringe proporzionalmente...
aaa
24/01/11 18:20
visualrenzo
Ho capito che sei abbastanza preparato per quanto concerne le risoluzioni picture e quant' altro, dopo aver finito il mio programmino sono rimasto fregato quando l' ho provato su un portatile che aveva il monitor 16/9 quindi schiacciato.
La mia risoluzione è di 1024x768 quella è inceve 1300 e qualcosa del genere ma anche se la porto a 1024 x768 non si vede bene ovvero se ne vede solo una parte,
Si può risolvere o il mio prog funziona solo coi monitor quadrati ?
Ciao e grazie
La mia risoluzione è di 1024x768 quella è inceve 1300 e qualcosa del genere ma anche se la porto a 1024 x768 non si vede bene ovvero se ne vede solo una parte,
Si può risolvere o il mio prog funziona solo coi monitor quadrati ?
Ciao e grazie
aaa
25/01/11 9:18
poeo85
è perfetto. però voglio capire. io pure avevo fatto qualcosa del genere solo che non facevo mai la verifica ml_DimHeight >0. perchè si fa ? n° 2 e poi Form1.Height / ml_DimHeight non è una divisione per 0 se poi si fa ml_DimHeight = Form1.Height ? se ti va rispondimi per favore e grazie. - visualrenzo - 18/01/11 18:14
perdonami non mi arrivano le notifiche per i commenti....
cmq ti spiego
allora l'if ml_DimHeight > 0 serve per la prima volta che esegui il programma, perchè quando nel load imposti la dimensione del form viene chiamato l'evento resize.
si fa ml_DimHeight = Form1.Height per avere le variabili sempre aggiornate con la dimensione del form.
ti spiego
allora tu rimpicciolisci lo schermo di 1/1000. Questo 1/1000 lo determini in base alla dimensione vecchia ok?
cioè se il form fa 1000 e lo rimpicciolisci di 1 = 999
in percentuale la dimensione corrente sarà il 99,9% della dimensione vecchia
capito?
per ovviare al problema della risoluzione devi basarti sull'oggetto Screen
mi spiego
non impostare la dimensione del form con costanti ma così
ll_FormWidth = Screen.Width * 0.9
prova a vedere come ti trovi in caso...resto a disposizione
perdonami non mi arrivano le notifiche per i commenti....
cmq ti spiego
allora l'if ml_DimHeight > 0 serve per la prima volta che esegui il programma, perchè quando nel load imposti la dimensione del form viene chiamato l'evento resize.
si fa ml_DimHeight = Form1.Height per avere le variabili sempre aggiornate con la dimensione del form.
ti spiego
allora tu rimpicciolisci lo schermo di 1/1000. Questo 1/1000 lo determini in base alla dimensione vecchia ok?
cioè se il form fa 1000 e lo rimpicciolisci di 1 = 999
in percentuale la dimensione corrente sarà il 99,9% della dimensione vecchia
capito?
per ovviare al problema della risoluzione devi basarti sull'oggetto Screen
mi spiego
non impostare la dimensione del form con costanti ma così
ll_FormWidth = Screen.Width * 0.9
prova a vedere come ti trovi in caso...resto a disposizione
aaa