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 - Immagine affiancata in Picture
Forum - Visual Basic 6 - Immagine affiancata in Picture

Avatar
tippolo (Normal User)
Pro


Messaggi: 157
Iscritto: 21/09/2008

Segnala al moderatore
Postato alle 11:51
Giovedì, 12/03/2009
Salve, come da titolo avrei la necessità una volta inserita un'immagine in una Picture di poterla visualizzare in modalità affiancata in modo da riempire tutta la Picture con effetto texture.

L'oggetto Picture mi sa che non dispone di una tale proprietà (se ce l'ha io non sono riuscito a trovarla).

In che modo potrei fare per raggiungere il mio scopo?

Grazie.

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 14:34
Giovedì, 12/03/2009
Questo perche' la Picture e' piu' grande dell'immagine ?

Oppure vuoi che l'immagine, anche se piu' piccola, venga ridimensionata ?

PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 15:50
Giovedì, 12/03/2009
allora... crea 2 picture 1 che conterrà la texture (chiamata picture1) e un'altra chiamata picture2 con autosize = true dove carichi la tua immagine "base" ... bene, ora guarda questo esempio che ti ho fatto:
Codice sorgente - presumibilmente VB.NET

  1. Private Sub Command1_Click()
  2. Dim x As Integer, y As Integer, k As Integer, q As Integer
  3. Picture1.AutoRedraw = True
  4. For y = 1 To (Picture1.Height \ Picture2.Height) 'numero righe
  5. For x = 1 To (Picture1.Width \ Picture2.Width) 'numero colonne
  6. Picture1.PaintPicture Picture2.Picture, k, q
  7. k = k + Picture2.Width
  8. Next x
  9. k = 0
  10. q = q + Picture2.Height
  11. Next y
  12. q = 0
  13. End Sub



Per problemi o altro non esitare a postare ;)

PM Quote
Avatar
tippolo (Normal User)
Pro


Messaggi: 157
Iscritto: 21/09/2008

Segnala al moderatore
Postato alle 19:26
Giovedì, 12/03/2009
Ciao,
scusate il ritardo.

Allora:
Testo quotato

Postato originariamente da theprogrammer:
Questo perche' la Picture e' piu' grande dell'immagine ?
Oppure vuoi che l'immagine, anche se piu' piccola, venga ridimensionata ?



No, theprogrammer forse non mi sono spiegato bene.
Inserisco un'immagine molto piccola dentro la picture e voglio visualizzare tutta la picture (a dimensioni fisse) con l'immagine che ho inserito che però essendo più piccola voglio che l'immagine si moltiplichi ed affiancarsi fino a coprire tutta la picture.
Per rendere meglio l'idea come gli sfondi di alcuni siti che piccole immagini affiancate danno l'idea della continuità rendendo lo sfondo omogeneo.


Testo quotato

Postato originariamente da GrG:

allora... crea 2 picture 1 che conterrà la texture (chiamata picture1) e un'altra chiamata picture2 con autosize = true dove carichi la tua immagine "base" ... bene, ora guarda questo esempio che ti ho fatto:
Codice sorgente - presumibilmente Plain Text

  1. .........



Per problemi o altro non esitare a postare ;)


Ciao Gregorio, c'hai quasi azzeccato, nel senso che il codice funziona bene, affianca le immagini, solo che tra un'immagine restano dei bordi vuoti (le immagini sono distanziate tra di loro) e non è proprio quello che cercavo per le ragioni che ho espresso prima. Altro problema con il tuo codice sta nel fatto che...
ammesso che io abbia una picture 100 x 100 ed inserisco un immagine 35 x 35. Nella picture vengono visualizzate 4 immagini per un totale di 70 x 70 (in questo caso non sto considerando i bordi della distanza). Quindi la Picture non è tutta piena, a me serve tutta piena con le immagini affiancate e senza bordi fra una e l'altra.
Ed aggiungo anche che non ha importanza che le ultime immagini vengano visualizzate solo in parte perchè superebbero Height e Width della Picture, anzi è proprio quello che vorrei.

Spero di esser stato chiaro. C'è l'ho messa tutta. ;)

Ultima modifica effettuata da tippolo il 12/03/2009 alle 19:29
PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 20:20
Giovedì, 12/03/2009
bè per stringere le immagini e farle appiccicate ti devi regolare tu diminuendo k (che è la distanza tra un'img e quella a fianco) e la q (che è lo spazio tra una riga e l'altra) tipo:
k = k + (Picture2.Width - 100)
poi al posto di 100 provi dei numeri finchè non ottieni lo spazio tra un img e l'altra voluto... perquanto riguarda il riempimento della picture allora aumenta il numero di "colonne" e "righe" tipo:
For y = 1 To (Picture1.Height \ Picture2.Height) + 10

e stessa cosa con x

insomma vedi tu... io ti ho dato una base è facile modificarla a tuo piacimento ;)

PM Quote
Avatar
tippolo (Normal User)
Pro


Messaggi: 157
Iscritto: 21/09/2008

Segnala al moderatore
Postato alle 20:33
Giovedì, 12/03/2009
Testo quotato

Postato originariamente da GrG:

bè per stringere le immagini e farle appiccicate ti devi regolare tu diminuendo k (che è la distanza tra un'img e quella a fianco) e la q (che è lo spazio tra una riga e l'altra) tipo:
k = k + (Picture2.Width - 100)
poi al posto di 100 provi dei numeri finchè non ottieni lo spazio tra un img e l'altra voluto... perquanto riguarda il riempimento della picture allora aumenta il numero di "colonne" e "righe" tipo:
For y = 1 To (Picture1.Height \ Picture2.Height) + 10

e stessa cosa con x

insomma vedi tu... io ti ho dato una base è facile modificarla a tuo piacimento ;)


Si GrG, la soluzione della distanza l'avevo già trovata così proprio come dici tu.
Ed un problema è risolto.

Per quanto riguardo invece il numero di righe e colonne non posso fare come dici tu (anche questo l'avevo provato) perchè l'immagine che andrò ad inserire nella Picture può variare di dimensioni, può essere 120 x 120 come 800 x 1000 (sto sparando a caso).
Fosse un'immagine di dimensioni fisse non ci sarebbero problemi, conterei le righe a priori.
Quindi non posso indicare io le righe e colonne perchè con un'immagine molto piccola non si riempirebbe la Picture, mentre con un'immagine troppo grande andrebbe in Overflow perchè la Picture avrebbe una dimensione maggiore della Form.
Comunque sto lavorando sul tuo codice.

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 20:34
Giovedì, 12/03/2009
Io scriverei ...

Codice sorgente - presumibilmente VB.NET

  1. Dim x As Long, y As Long
  2.    
  3.     Picture1.AutoRedraw = True
  4.     Picture1.ScaleMode = vbPixels
  5.     Picture2.ScaleMode = vbPixels
  6.    
  7.     y = 0
  8.     While y < Picture1.ScaleHeight
  9.         x = 0
  10.         While x < Picture1.ScaleWidth
  11.             Picture1.PaintPicture Picture2.Picture, x, y
  12.             x = x + Picture2.ScaleWidth
  13.         Wend
  14.         y = y + Picture2.ScaleHeight
  15.     Wend


PM Quote
Avatar
tippolo (Normal User)
Pro


Messaggi: 157
Iscritto: 21/09/2008

Segnala al moderatore
Postato alle 20:43
Giovedì, 12/03/2009
Testo quotato

Postato originariamente da theprogrammer:

Io scriverei ...

Codice sorgente - presumibilmente VB.NET

  1. Dim x As Long, y As Long
  2.    
  3.     Picture1.AutoRedraw = True
  4.     Picture1.ScaleMode = vbPixels
  5.     Picture2.ScaleMode = vbPixels
  6.    
  7.     y = 0
  8.     While y < Picture1.ScaleHeight
  9.         x = 0
  10.         While x < Picture1.ScaleWidth
  11.             Picture1.PaintPicture Picture2.Picture, x, y
  12.             x = x + Picture2.ScaleWidth
  13.         Wend
  14.         y = y + Picture2.ScaleHeight
  15.     Wend



Ciao theprogrammer,
ho provato il tuo codice senza ancora studiarlo e debbo dire che funziona perfettamente sia con immagini piccolissime che con immagini molto grandi. :k:

Per stasera credo che tra un pò lascerò. Un bel film su Italia1 :)

PM Quote