tippolo (Normal User)
Pro
Messaggi: 157
Iscritto: 21/09/2008
|
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.
|
|
theprogrammer (Normal User)
Guru^2
Messaggi: 2509
Iscritto: 28/01/2009
|
Questo perche' la Picture e' piu' grande dell'immagine ?
Oppure vuoi che l'immagine, anche se piu' piccola, venga ridimensionata ?
|
|
GrG (Member)
Guru^2
Messaggi: 3430
Iscritto: 21/08/2007
|
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 |
Private Sub Command1_Click() Dim x As Integer, y As Integer, k As Integer, q As Integer Picture1.AutoRedraw = True For y = 1 To (Picture1.Height \ Picture2.Height) 'numero righe For x = 1 To (Picture1.Width \ Picture2.Width) 'numero colonne Picture1.PaintPicture Picture2.Picture, k, q k = k + Picture2.Width Next x k = 0 q = q + Picture2.Height Next y q = 0 End Sub
|
Per problemi o altro non esitare a postare
|
|
tippolo (Normal User)
Pro
Messaggi: 157
Iscritto: 21/09/2008
|
Ciao,
scusate il ritardo.
Allora:
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.
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 |
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 |
|
GrG (Member)
Guru^2
Messaggi: 3430
Iscritto: 21/08/2007
|
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
|
|
tippolo (Normal User)
Pro
Messaggi: 157
Iscritto: 21/09/2008
|
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. |
|
theprogrammer (Normal User)
Guru^2
Messaggi: 2509
Iscritto: 28/01/2009
|
Io scriverei ...
Codice sorgente - presumibilmente VB.NET |
Dim x As Long, y As Long Picture1.AutoRedraw = True Picture1.ScaleMode = vbPixels Picture2.ScaleMode = vbPixels y = 0 While y < Picture1.ScaleHeight x = 0 While x < Picture1.ScaleWidth Picture1.PaintPicture Picture2.Picture, x, y x = x + Picture2.ScaleWidth Wend y = y + Picture2.ScaleHeight Wend
|
|
|
tippolo (Normal User)
Pro
Messaggi: 157
Iscritto: 21/09/2008
|
Postato originariamente da theprogrammer:
Io scriverei ...
Codice sorgente - presumibilmente VB.NET |
Dim x As Long, y As Long Picture1.AutoRedraw = True Picture1.ScaleMode = vbPixels Picture2.ScaleMode = vbPixels y = 0 While y < Picture1.ScaleHeight x = 0 While x < Picture1.ScaleWidth Picture1.PaintPicture Picture2.Picture, x, y x = x + Picture2.ScaleWidth Wend y = y + Picture2.ScaleHeight 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.
Per stasera credo che tra un pò lascerò. Un bel film su Italia1 |
|