Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    VB.net Disegnare sopra una picture

    Buonasera, una domanda veloce, è possibile, una volta caricata una immagine dentro una picture box al suo interno? mi spiego meglio:

    Carico una planimetria di un appezzamento di terreno, vorrei disegnare sopra a questa immagine, un rettangolo, quadrato o altra forma in modo da evidenziare una parte per poi collegarla ad una scheda dove andrò a inserire quello che viene fatto in quel pezzo di terra. Se ho aperto un post ripetuto da altri, chiedo perdono in anticipo, ma non ho trovato niente.

    Grazie

  2. #2
    Ciao,

    codice:
           Dim miaImmagine As New Bitmap("D:\auto.jpg")
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
            PictureBox1.Image = miaImmagine
            PictureBox1.SizeMode = PictureBoxSizeMode.AutoSize
    
        End Sub
    
        Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
    
            'disegno un ellisse
            e.Graphics.FillEllipse(Brushes.Orange, 80, 180, 100, 37)
    
            'disegno una foto più piccola della staessa immagine
            e.Graphics.DrawImage(miaImmagine, 10, 25, 100, 69)
    
        End Sub

  3. #3
    Intanto grazie mille per la risposta. Se volessi disegnare un rettangolo / quadrato, desumo che devo inserire questa parte di codice : e.Graphics.FillRectangle(Brushes.Orange, 80, 180, 100, 37)

    Doce 80 e 180 sono le misure giusto?
    Ma se volessi che le misure siano dinamiche ovvero, quando il mouse viene clikkato, mosso e rilasciato (es quando si disegna una figura con paint), ho letto che devo usare gli eventi mouse down, mouse move e mouse up mi sembra, ma come fare? Ho letto nel libro che ho (Guida per lo sviluppatore) che c'è un esempio per fare un prog simile a paint, ma sono 3 paginate di codice, volevo sapere se c'era un metodo più veloce adattando quell'esempio che mi ha i fatto.

    A priscindere, sei stato gentilissimo e ti ringrazio per il tempo dedicato.

  4. #4
    A titolo di esercizio qualche tempo fa scrissi queste righe di codice per disegnare una serie di linee su una picturebox.
    Vedi se puoi adattarle ai tuoi scopi.

    codice:
    Public Class Form1
    
        Dim linee As New ArrayList
        Dim punto As New PointF
        Dim x2 As Single
        Dim y2 As Single
        Dim nClick As Integer = 0
    
        Private Sub PictureBox1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseClick
    
            If e.Button = Windows.Forms.MouseButtons.Left Then
    
                punto.X = e.X
                punto.Y = e.Y
                linee.Add(punto)
                nClick += 1
                PictureBox1.Invalidate()
    
            ElseIf e.Button = Windows.Forms.MouseButtons.Right Then
    
                punto.X = -1
                punto.Y = -1
                linee.Add(punto)
                nClick = 0
    
            End If
    
        End Sub
    
        Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
    
            If nClick > 0 Then
    
                x2 = e.X
                y2 = e.Y
    
                PictureBox1.Invalidate()
    
            End If
    
        End Sub
    
        Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
    
            Dim puntoVariabile As New PointF
            Dim ultimopunto As New PointF
            Dim punto1 As New PointF
            Dim punto2 As New PointF
    
            If linee.Count > 0 Then
    
                puntoVariabile.X = x2
                puntoVariabile.Y = y2
                ultimopunto = DirectCast(linee.Item(linee.Count - 1), PointF)
    
                e.Graphics.DrawLine(Pens.Blue, ultimopunto, puntoVariabile)
    
                For i As Integer = 1 To linee.Count - 1
    
                    punto1 = DirectCast(linee.Item(i - 1), PointF)
                    punto2 = DirectCast(linee.Item(i), PointF)
    
                    If punto1.X <> -1 And punto2.X <> -1 Then
    
                        e.Graphics.DrawLine(Pens.Blue, punto1, punto2)
    
                    End If
    
                Next
    
            End If
    
        End Sub
    
    End Class

  5. #5
    Una volta messo a letto il piccolo ci provo e ti faccio sapere, grazie della disponibilità

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.