Oppure

Loading
16/01/11 21:20
visualrenzo


Buona sera è tutto il pomeriggio che mi scervello ho provato in tutti i modi.
Ho il seguente codice e vorrei che image1 si rimpicciolisse in percentuale quando ridimensiono il form con resize.

Ho provato anche calcolando l' area interna sia di image1 che del form ma non riesco. sapreste darmi una dritta ?

Grazie

Dim qqh, qqw, ht, ll As Integer


Private Sub Form_Load()
Form1.Width = 15480
Form1.Height = 11190
Image1.Width = 1500
Image1.Height = 1500
End Sub

Private Sub Form_Resize()
qqh = Form1.Height
qqw = Form1.Width
ht = qqh - (qqh - Image1.Height)
ll = qqw - (qqw - Image1.Width)
Image1.Width = ht
Image1.Height = ll

Label1.Caption = Form1.Width & " " & Form1.Height

End Sub
Ultima modifica effettuata da visualrenzo 16/01/11 21:21
aaa
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
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 ?
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...


:heehee::heehee::heehee:
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
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 :k:
aaa