Lo scopo, e' quello di entrare piu' nel merito di una discussione, che e' aperta sul forum, riguardo a come utilizzare il foglio grafico messo a disposizione in .NET, e disegnarci sopra qualcosa.
Inoltre vorrei mostrare come si crea un buffer video e come disegnarci sopra e riversare il tutto nello schermo della form prescelto, cio' server in primis per eliminare quel fastidioso sfarfallio che una disegno diretto sulla form crea.
Allora il primo passo e' ovviamente quello di ottenere l'oggetto grapichs dove dobbiamo disegnare ecco come:

Graphics foglio = Form1.ActiveForm.CreateGraphics();

Dove Form1 e' ovviamente l'oggetto o meglio la form sulla quale vogliamo disegnare, abbiamo ora una superfice dove disegnare.

E possiamo farlo con i vari metodi Es:

foglio.DrawString("CIAO STO DISGNANDO",
   new Font("Georgia", FontStyle.Bold),
           new SolidBrush(Color.Black),
                           100f, 100f);

Disegna una stringa, con font,colore,e locazione indicati nel metodo, per tutti i metodi esistenti, conusultate MSDN oppure controllate L'intellisense che li elenca.

Ora cosi facendo disegnamo direttamente dentro al form, ma cio se va bene quando si deve disegnare poca roba, diventa ingestibile nel caso ad'esempio di un videogame, per il fatto che molti disegni genererebbero un'inevitable sfarfallio dovuto al continuo ridisegno dei frame.
E' il momento allora di usare un buffer video, ovvero un'area di memoria che riserviamo come foglio di disegno e nella quale effetivamente andiamo a disegnare, dopodiche' una volta composto tutto il frame in memoria, riversiamo il tutto dentro al foglio della form ecco come:

Creiamo due nuovi oggetti uno istanziato e un'altro null:

BufferedGraphicsContext buffer = new  
            BufferedGraphicsContext();

BufferedGraphics buf

Abbiamo creato ora un oggetto che ci servira' per creare un buffer video con le stesse caratteristiche della nostra form ecco come:

Rectangle rect = new Rectangle(0, 0,  
             Form1.ActiveForm.Width,
             Form1.ActiveForm.Height);

Sottointendendo che Form1 e' la nostra form, ne ricaviamo l'altezza e la larghezza e le memoriziamo dentro ad un oggetto rectangle.
Ora istanziamo il buffer video prendendo per esso le caratteristiche della nostra form:

buf = buffer.Allocate(Form1.ActiveForm.CreateGraphics(), rect);

Ora abbiamo un buffer video, tale quale al foglio della form solo che e' in memoria, e possiamo utilizzarlo come un semplice foglio su cui disegnare con gli stessi metodi che utilizzavamo su di un semplice foglio graphics come ad esempio:

buf..DrawString("CIAO STO DISGNANDO",
   new Font("Georgia", FontStyle.Bold),
           new SolidBrush(Color.Black),
                           100f, 100f);

Abbiamo fatto la stessa cosa di prima ma ora nn si vedra' nella form perche' per ora e' scritta in memoria video.
Quindi e' il momento del rendering del buffer video sulla nostra form:

buf.Render();

Cancelliamo il buffer video per una nuova scena con un colore a scelta in questo caso il nero:

buf.Graphics.Clear(Color.Black);

Ecco fatto abbiamo ora un sistema per creare loop di videogame, oppure qualsiasi altra applicazione che sfrutta la gafica utilizzando un sistema efficace e sicuro.

pulsar4@alice.it