Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - classe Graphics: riproduzione di un poligono in un pannello
Forum - C# / VB.NET - classe Graphics: riproduzione di un poligono in un pannello

Avatar
maikarki (Normal User)
Newbie


Messaggi: 9
Iscritto: 10/09/2011

Segnala al moderatore
Postato alle 18:10
Domenica, 30/10/2011
Questo topic è stato chiuso dal moderatore

Buongiorno a tutti!
Visto che in precedenza siete stati così gentili ad aiutarmi ci riprovo ancora un volta.
Il problema è (credo) semplice ma, essendo un principiante, ritengo che mi stia sfuggendo qualcosa.
Io dovrei in VB.NET popolare due vettori separati all'interno di una subroutine, chamiamoli: punti_x() e punti_y()
Una volta creati e popolati si vorrebbe che fossero uniti in un insieme di punti rappresentando un poligono all'interno di un pannello.

Orbene: quanto descritto funziona se tutto il codice viene inserito all'interno di Private Sub Panel1_Paint ma quando cerco di spostare il punto di creazione del vettore una bella X rossa mi comunica che non viene effettuata correttamente la riproduzione del poligono. Il codice che si vorrebbe fare funzionare è il seguente:

Codice sorgente - presumibilmente VB.NET

  1. Public Class Form1
  2.     Public punti_x() As Double
  3.     Public punti_y() As Double
  4.     Public n As Integer
  5.  
  6.  
  7.  
  8.     Private Sub Panel1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Panel1.Paint
  9.  
  10.  
  11.  
  12.         'Fusione dei due vettori dei punti X e Y in un unico insieme di punti da renderizzare
  13.         N = UBound(punti_x)
  14.         Dim cp(N - 1) As Point
  15.         For pt = 0 To N - 1
  16.             cp(pt).X = punti_x(pt)
  17.             cp(pt).Y = punti_y(pt)
  18.         Next
  19.  
  20.  
  21.         Dim penna As New Pen(Color.Maroon, 2)
  22.         Dim pennello As New SolidBrush(Color.Lime)
  23.         e.Graphics.DrawPolygon(penna, cp)
  24.         e.Graphics.FillPolygon(pennello, cp)
  25.  
  26.     End Sub
  27.  
  28.     Public Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  29.         'INIZIA LA COMPOSIZIONE DEI 2 VETTORI CHE RICEVONO SEPARATAMENTE I VALORI DI X E Y
  30.  
  31.         n = 4
  32.         ReDim Preserve punti_x(n)
  33.         ReDim Preserve punti_y(n)
  34.         'punto 1
  35.         punti_x(0) = 0
  36.         punti_y(0) = 0
  37.         'punto 2
  38.         punti_x(1) = 0
  39.         punti_y(1) = 50
  40.         'punto 3
  41.         punti_x(2) = 50
  42.         punti_y(2) = 50
  43.         'punto 4
  44.         punti_x(3) = 50
  45.         punti_y(3) = 0
  46.  
  47.         'FINE DELLA COMPOSIZIONE DEI VETTORI
  48.  
  49.         '--------------------------------------------
  50.     End Sub
  51. End Class



Dove sto sbagliando?

Grazie mille

PM
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Up
3
Down
V
Segnala al moderatore
Postato alle 20:51
Domenica, 30/10/2011
All'inizio del Paint scrivi

If punti_x Is Nothing Then Return

e alla fine del Click

Panel1.Refresh()

Grazie mille, funziona! Grazie ancora... - maikarki - 30/10/11 21:21


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM
Avatar
Qwertj (Dev Team)
Guru


Messaggi: 678
Iscritto: 30/05/2011

Up
0
Down
V
Segnala al moderatore
Postato alle 19:59
Domenica, 30/10/2011
Riga? Errore?

Non viene segnalato alcune errore all'interno del codice. Semplicemente non funziona... - maikarki - 30/10/11 20:10
sembra che non riesca a comunicare il valore dei due vettori alla Sub Panel1.paint o che ci sia un problema di refresh... - maikarki - 30/10/11 20:22


Blog:
<coming soon>
Appalo:
http://www.appalo.it/
PM