Estrazione da una picturebox

di il
4 risposte

Estrazione da una picturebox

Salve a tutti, avrei un problema con Visual Basic 2010.
Ho un'immagine contenuta in una PictureBox, volevo sapere qual è la funzione che mi consente di estrarre una porzione di questa (dall'ascissa X1 all'ascissa X2, dall'ordinata Y1 alll'ordinata Y2) per poi metterla ad esempio in un'altra PictureBox.
Grazie in anticipo.

4 Risposte

  • Re: Estrazione da una picturebox

    Ciao Mark982, sei nella sezione sbagliata, questo messaggio dovrebbe stare in .NetFramework.

    Comunque ecco del codice che ti potrebbe servire:
    
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            Dim img As New Bitmap(100, 100) ' 100 e 100 sono width e height della nuova immagine
            Dim g As Graphics = Graphics.FromImage(img)
            g.DrawImageUnscaled(PictureBox1.Image, 20, 20, 100, 100) '20 e 20 sono la x e la y, 100 e 100 sono la width e la height della zona da ritagliare
            PictureBox2.Image = img
        End Sub
    
    Questo esempio ritaglia una porzione da una PictureBox e la disegna in un altra. Invece di (x1,y1) (x2, y2) usa (x1,y1), width e height ma è la stessa cosa.
  • Re: Estrazione da una picturebox

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    Dim img As New Bitmap(100, 100) ' 100 e 100 sono width e height della nuova immagine
    Dim g As Graphics = Graphics.FromImage(img)
    g.DrawImageUnscaled(PictureBox1.Image, 20, 20, 100, 100) '20 e 20 sono la x e la y, 100 e 100 sono la width e la height della zona da ritagliare
    PictureBox2.Image = img
    End Sub
    Grazie per la risposta, ma avevo già provato con DrawImageUnscaled.
    Il problema del codice che mi hai mandato è che 20, 20 non sono la x1 e la y1 a partire dalle quali deve essere copiata l'immagine della picturebox1, ma sono le coordinate a partire dalle quali verrà disegnata l'immagine nella picturebox2 (in sostanza mi viene copiata sempre l'immagine che parte dall'angolo superiore sinistro della picturebox1 e che si estende fino a 100,100 )
  • Re: Estrazione da una picturebox

    Ops, ritento
    
    Dim r As Rectangle = New Rectangle(20, 20, 100, 100)
    g.DrawImage(PictureBox1.Image, 0, 0, r, GraphicsUnit.Pixel)
    
    Il metodo DrawImage ha una trentina di varianti per cui uno che ti va bene alla fine lo trovi
    In questo esempio lo 0, 0 indicano le coordinate nella destinazione, mentre r contiene le coordinate del ritaglio nell' immagine sorgente.
  • Re: Estrazione da una picturebox

    Sì, credo che questa 'versione' vada meglio, adesso ci lavoro su e ti ringrazio!
    PS: avevo postato lo stesso argomento nella sezione giusta poco fa, sorry!
Devi accedere o registrarti per scrivere nel forum
4 risposte