Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Image che non si adatta dopo il resize
Forum - Visual Basic 6 - Image che non si adatta dopo il resize

Avatar
visualrenzo (Normal User)
Pro


Messaggi: 94
Iscritto: 15/05/2009

Segnala al moderatore
Postato alle 22:20
Domenica, 16/01/2011


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 il 16/01/2011 alle 22:21
PM
Avatar
poeo85 (Normal User)
Pro


Messaggi: 104
Iscritto: 27/01/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 11:33
Lunedì, 17/01/2011
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

PM
Avatar
visualrenzo (Normal User)
Pro


Messaggi: 94
Iscritto: 15/05/2009

Up
0
Down
V
Segnala al moderatore
Postato alle 20:12
Lunedì, 17/01/2011
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 il 30/01/2011 alle 12:11
PM
Avatar
poeo85 (Normal User)
Pro


Messaggi: 104
Iscritto: 27/01/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 9:17
Martedì, 18/01/2011
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:

è 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
PM
Avatar
visualrenzo (Normal User)
Pro


Messaggi: 94
Iscritto: 15/05/2009

Up
0
Down
V
Segnala al moderatore
Postato alle 19:20
Lunedì, 24/01/2011
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

PM
Avatar
poeo85 (Normal User)
Pro


Messaggi: 104
Iscritto: 27/01/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 10:18
Martedì, 25/01/2011
è 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:

con l'oggetto Screen puoi impostare anche il mousepointer...screen.mousepointer = vbHourglass è la clessidra per i caricamenti...oppure con scree.mousepointer = vbDefoult lo resetti al default - poeo85 - 25/01/11 11:27
PM