Oppure

Loading
05/12/12 13:22
Sal47
Salve,
sono alle prime armi con Vb2010 e in un mio programma ho una picturebox in cui è visualizzata una foto jpg (640x480).
Ora vorrei ricomporre la stessa foto in tante piccole picturebox tutte affiancate (ad esempio 12 picturebox, 3 righe e 4 colonne) in modo da rivisualizzare su queste la stessa foto per intero.
Ho trovato uno spunto su
"pierotofy.it/pages/extras/forum/16/1024282-ritagliare_immagine_in_una_picturebox/…;
però questo metodo mi funziona solo per il primo riquadro in alto a sinistra.
Potete darmi qualche suggerimento/consiglio?
Sperando di essere stato chiaro, ringrazio anticipatamente.
Saluti
Sal47
aaa
05/12/12 15:38
Non ho visto il codice di cui parli ma probabilmente basta modificare le coordinate di inizio taglio e le dimensioni.
05/12/12 17:48
Sal47
Grazie per la risposta e sperando in un ulteriore aiuto allego il codice e il file .jpg con il form e le picturebox.
Al click sul "btn1o riquadro" nella picturebox1 appare correttamente la parte alta della foto (un paesaggio) in PictureBox0
da (0,0) a (160,160).
Al click sugli altri btn dei successivi riquadri non succede nulla.
------------
Public Class PuzzleForm_12pz
Private Sub PuzzleForm_12pz_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Intro.ListBox1.SelectedIndex = 0 Then nameImage = ("C:\MulinoAVento.jpg";)
If Intro.ListBox1.SelectedIndex = 1 Then nameImage = ("C:\BuggerruSardegna.jpg";)
If Intro.ListBox1.SelectedIndex = 2 Then nameImage = ("C:\Santorini.jpg";)
If Intro.ListBox1.SelectedIndex = 3 Then nameImage = ("C:\Spiaggia_Grado.jpg";)
PictureBox0.Image = System.Drawing.Bitmap.FromFile(nameImage)
End Sub

Private Sub btnRicrea1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRicrea1.Click
Dim img1 As New Bitmap(PictureBox1.Width, PictureBox1.Height)
Dim pb1_graphic As Graphics = Graphics.FromImage(img1)
pb1_graphic.DrawImageUnscaled(PictureBox0.Image, 0, 0, 160, 160)
PictureBox1.Image = img1 OK FUNZIONA
End Sub

Private Sub btnRicrea2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRicrea2.Click
Dim img2 As New Bitmap(PictureBox1.Width, PictureBox1.Height)
Dim pb2_graphic As Graphics = Graphics.FromImage(img2)
'dovrebbe prendere il 2° riquadro in lto da sin
pb2_graphic.DrawImageUnscaled(PictureBox0.Image, 160, 0, 320, 160)
PictureBox2.Image = img2 NON FUNZIONA
End Sub
End Class
aaa
05/12/12 18:39
Se i pezzi hanno uguale dimensione, non devi variarla. Alla fine la DrawImageUnscaled deve quindi essere sempre

..., 160, 160)

P.S. Se vuoi allegare tutto lo zip con il progetto allora si può provare. Altrimenti è impossibile fare una prova anche se hai spiegato bene tutto il problema.
05/12/12 19:47
Sal47
Ciao,
il "progetto" è proprio agli inizi.
E' costituito da un form iniziale chiamato "Intro.vb" per la scelta del tipo di puzzle e dal form
"PuzzleForm_12pz.vb".
Non essendo pratico nei file zip ti allego una jpg con i due form e sotto i rispettivi codici.
Saluti
__________
Public Class Intro
Dim scelta As Integer
Private Sub RadioButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.Click, RadioButton1.Click
If sender.text = "Facile (12 pz.)" Then scelta = 0
If sender Is RadioButton2 Then scelta = 1
'If sender Is RadioButton3 Then scelta = 2
End Sub

Private Sub btnConferma_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConferma.Click
If scelta = 0 Then
PuzzleForm_12pz.Show()
End If
'If scelta = 1 Then
'PuzzleForm_48pz.Show()
'End If
End Sub

Private Sub ListBox1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.Click
btnConferma.Enabled = True
End Sub
---------------
Public Class PuzzleForm_12pz

Private Sub PuzzleForm_12pz_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Intro.ListBox1.SelectedIndex = 0 Then nameImage = ("C:\MulinoAVento.jpg";)
If Intro.ListBox1.SelectedIndex = 1 Then nameImage = ("C:\BuggerruSardegna.jpg";)
If Intro.ListBox1.SelectedIndex = 2 Then nameImage = ("C:\Santorini.jpg";)
If Intro.ListBox1.SelectedIndex = 3 Then nameImage = ("C:\Spiaggia_Grado.jpg";)
PictureBox0.Image = System.Drawing.Bitmap.FromFile(nameImage) ' oppure
'Dim bmp As New Bitmap(nameImage)
'PictureBox1.Image = bmp
End Sub

Private Sub btnRicrea1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRicrea1.Click
'nuova immagine delle dimensioni della tua picturebox
Dim img1 As New Bitmap(PictureBox1.Width, PictureBox1.Height)
'classe graphic dell'immagine
Dim pb1_graphic As Graphics = Graphics.FromImage(img1)
'ne prende una parte
pb1_graphic.DrawImageUnscaled(PictureBox0.Image, 0, 0, 160, 160)
'assegna alla tua immagine l'immagine ridimensionata
PictureBox1.Image = img1
End Sub

Private Sub btnRicrea2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRicrea2.Click
Dim img2 As New Bitmap(PictureBox1.Width, PictureBox1.Height)
Dim pb2_graphic As Graphics = Graphics.FromImage(img2)
'ne prende una 2^ parte
pb2_graphic.DrawImageUnscaled(PictureBox0.Image, 160, 0, 160, 160)
'assegna alla tua immagine l'immagine ridimensionata
PictureBox2.Image = img2
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' per aprire un form in cui si vede la foto per intera in altra picturebox
If Button1.Text = "Image preview" Then
Button1.Text = "Close preview"
PuzzleFotoOriginale.Show()
PuzzleFotoOriginale.picFotoOriginale.Image = System.Drawing.Bitmap.FromFile(nameImage)
Else
Button1.Text = "Image preview"
PuzzleFotoOriginale.Close()
End If

End Sub
End Class
aaa
05/12/12 20:49
Non mi sono spiegato ... c'è bisogno di tutte le immagini e del progetto già realizzato altrimenti ci vuole troppo tempo per impostarlo e provarlo e sinceramente non ne ho il tempo.

Se riesci a farci scaricare lo zip di tutti i file necessari (jpg comprese) allora si possono impiegare 10 minuti per controllarlo. Creare uno zip non è difficile ...
06/12/12 5:17
Sal47
Ciao, dopo vari tentativi spero di essere riuscito ad approntare il file Allegato.zip che credo contenga il tutto.
Qualora il file zip non fosse utilizzabile ti ringrazio comunque del tempo che mi stai dedicando.
aaa