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
C# / VB.NET - Vb2010 - Picturebox
Forum - C# / VB.NET - Vb2010 - Picturebox

Avatar
Sal47 (Normal User)
Pro


Messaggi: 96
Iscritto: 05/02/2009

Segnala al moderatore
Postato alle 14:22
Mercoledì, 05/12/2012
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
"www.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

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6403
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 16:38
Mercoledì, 05/12/2012
Non ho visto il codice di cui parli ma probabilmente basta modificare le coordinate di inizio taglio e le dimensioni.


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
Sal47 (Normal User)
Pro


Messaggi: 96
Iscritto: 05/02/2009

Segnala al moderatore
Postato alle 18:48
Mercoledì, 05/12/2012
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


Sal47 ha allegato un file: Immagine2.JPG (46790 bytes)
Clicca qui per guardare l'immagine
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6403
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 19:39
Mercoledì, 05/12/2012
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.


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
Sal47 (Normal User)
Pro


Messaggi: 96
Iscritto: 05/02/2009

Segnala al moderatore
Postato alle 20:47
Mercoledì, 05/12/2012
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


Sal47 ha allegato un file: ImageForms.JPG (42944 bytes)
Clicca qui per guardare l'immagine
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6403
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 21:49
Mercoledì, 05/12/2012
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 ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
Sal47 (Normal User)
Pro


Messaggi: 96
Iscritto: 05/02/2009

Segnala al moderatore
Postato alle 6:17
Giovedì, 06/12/2012
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.  


Sal47 ha allegato un file: Allegato.zip (353612 bytes)
Clicca qui per scaricare il file
PM Quote