Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    105

    [vb.net 2008] redraw picturebox

    Salve a tutti,

    volevo sapere visto che non esiste più la proprietà redraw, come posso disegnare in una bitmap "tampone" per poi ridisegnare il contenuto della bitmap con la funzione paint della picturebox.
    Perchè io ora sto usando questo algoritmo nel paint della picturebox:
    codice:
            
    Private Sub PBmappa_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PBmappa.Paint
            If startpaint Then
                For i As Integer = 0 To coords.Count - 1 Step 1
                e.Graphics.FillEllipse(Brushes.Gray,  coords.Item(i).X, coords.Item(i).Y, 8, 8)
                Next
            End If
            startpaint = True
     End Sub
    e nella funzione di disegno uso questo codice per disegnare l'ultimo punto e salvarlo:
    codice:
    Me.PBmappa.CreateGraphics.FillEllipse(Brushes.Gray, mapcoors.X, mapcoors.Y, 8, 8)
    coords.Add(mapcoors)
    così facendo salvo tutte le volte le coordinate dell'ellisse nell'array coords, ma ovviamente non è il metodo più efficace, soprattutto perchè lo dovrò usare assieme al timer di 100ms e quindi verrebbe una lista di punti enorme.

    Se qualcuno mi può illustrare un metodo testato più efficente lo ringrazio molto

    Adanf

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    105
    Nessuno sa aiutarmi? é possibile che sia l'unico metodo per mantenere in memoria un disegno di una picturebox?

  3. #3
    Se hai bisogno di ridisegnare il contenuto di una picturebox puoi utilizzare il metodo PictureBox.Refresh

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    105
    Originariamente inviato da Gandalfrank
    Se hai bisogno di ridisegnare il contenuto di una picturebox puoi utilizzare il metodo PictureBox.Refresh
    Scusami se ti rispondo un pò in ritardo, ma il comando picturebox.refresh è proprio quello che sto usando ora per ridisegnare ogni punto come puoi vedere dal mio codice sopra, però il mio problema era sapere se l'unico metodo possibile per ritracciare dei punti in una picturebox è quello di salvare ogni punto in un arrayList oppure si può fare in maniera più "veloce" con una bitmap temporanea o qualcosa del genere?

    Usate tutti il mio metodo, com'è possibile??

  5. #5
    Credevo di avere capito che tu volessi ri-disegnare il contenuto della tua PictureBox e che tu cercassi un comando che te lo permettesse...PictureBox.Refresh fa esattamente questo.

    Come non detto.

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    105
    Si infatti è quello che voglio fare di ri-disegnare il contenuto della picturebox, ma speravo che ci fosse un metodo più "professionale", invece di tenere in memoria tutti i punti in una Lista e poi doverli fare ridisegnare uno ad uno dal metodo paint della picturebox.

    Peccato, spero che un buon uomo possa leggere questo post ed illuminarmi

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.