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
Visual Basic 6 - semplicissimo codice per frattali
Forum - Visual Basic 6 - semplicissimo codice per frattali

Avatar
it9tzz (Normal User)
Newbie


Messaggi: 2
Iscritto: 20/10/2011

Segnala al moderatore
Postato alle 23:17
Giovedì, 20/10/2011
Però non funziona:d o, almeno, da principiante non ho capito cosa dovrebbe succedere....
Trascrivo il ( semplice codice ) ma quando lancio l'istruzione non succede nulla. Grazie

Private Sub Form1_Paint()
Dim i, h As Integer
For i = 0 To Form1.Height
i = i + 14
For h = 0 To Form1.Width
Form1.ForeColor = Form1.ForeColor + 10
Form1.Line (h, i)-(i, 0)
h = h + 10
Next
Next
Form1.Refresh
End Sub

PM
Avatar
TermYnator (Normal User)
Newbie


Messaggi: 12
Iscritto: 28/09/2011

Up
0
Down
V
Segnala al moderatore
Postato alle 4:11
Venerdì, 21/10/2011
Chi ha scritto quel codice, di VB sapeva pochino...
Il codice funzionante (ammesso e non concesso che il tuo form si chiami Form1) è questo:
Codice sorgente - presumibilmente VB.NET

  1. Option Explicit
  2. Private Sub Form_Load()
  3. Form1.ForeColor = &HFF&
  4. End Sub
  5.  
  6. Private Sub Form_Paint()
  7. Dim i, h As Integer
  8. On Error GoTo fine
  9. For i = 0 To Form1.Height
  10. i = i + 14
  11. For h = 0 To Form1.Width
  12. Form1.ForeColor = Form1.ForeColor + 10
  13. Form1.Line (h, i)-(i, 0)
  14. h = h + 10
  15. Next
  16. Next
  17. Form1.Refresh
  18. Exit Sub
  19. fine:
  20. End Sub


Il codice che hai presentato, contiene due errori:
Il primo errore, è nella dichiarazione dell'evento Paint. In VB, l'evento relativo ad un form, si chiama Form_Paint() e non Form1_Paint().
Nel tuo codice quindi, l'evento paint non richiama alcun codice :)

Il secondo errore, è insito nel valore che il codice da alla proprietà forecolor di form1, se usi il colore di default che VB attribuisce alla proprietà forecolor (valore di sistema).
VB usa valori long per l'attribuzione dei colori. Tali valori nella tabella delle proprietà, sono rappresentati in forma esadecimale a 8 byte.

I primi due bite a sinistra, se eguali a "80", indicano che il colore appartiene ad una tabella stabilita dal sistema.
Gli ultimi due bytes, indicano invece il codice che il sistema attribuisce a quel colore. Tali codici rappresentano poco più di una ventina di colori.
Dal momento che il tuo codice passa da un colore all'altro con incrementi di 10, al terzo incremento tenta di attribuire un colore che non esiste, e da un errore.

I colori "normali, invece, hanno il primo gruppo eguale a "00".
i seguenti tre gruppi di bytes,  rappresentano tre valori (da 0 a 255 in numerazione decimale) che indicano le componenti blu, verde rosso.

Prendiamo come esempio: &H80000000&, e &H00FF8080&.
Il primo colore ( &H80000000&) è il nero di sistema.
il secondo colore ( &H00FF8080&) avendo i primi due byte a 0, è un colore normale,le cui componenti sono:
Blu=255 (FF)
verde=128   (80)
rosso=128  (80)

In questo ultimo caso, ha un senso incrementare il valore di 10 punti per volta.
Ecco perchè,nell'evento Load del form, il codice suggerito  imposta la proprietà forecolor su un rosso (&HFF&). L'intercettatore di errori, serve per evitare che incrementando di continuo il valore della proprietà, si ottengano valori non validi per la proprietà (troppo grandi).
Spero di averti aiutato ...





Ultima modifica effettuata da TermYnator il 21/10/2011 alle 4:27
Grazie mille - it9tzz - 21/10/11 18:17
PM