Di RobyDx (del 04/08/2007 @ 09:12:23, in DirectX9, linkato 1575 volte)
Le superfici in DirectDraw sono come sappiamo degli array di numeri corrispondenti ai colori. L'array di colori viene estratto eseguengo una operazione chiamata accesso alla memoria che genera una matrice di dimensione larghezza x altezza. Ogni punto di questa matrice è un intero che tramite la classe color possiamo facilmente gestire per ottenere o inserire il colore. Prima che iniziate a procedere vi avverto che DirectDraw presenta un grosso bug in questa istruzione. Se avete aggiornato alla versione 9.0b questa funzionerà altrimenti non troverete questa istruzione e vi sarà impossibile compiere questa azione.
Dim dati As Integer(,) Dim i As Integer Dim j As Integer dati = CType(superficie.Lock(LockFlags.Wait), Integer(,)) For i = 0 To 639 For j = 0 To 479 dati(i, j) = Color.Red.ToArgb Next Next
superficie.Unlock(dati)
In questo esempio ho bloccato una superficie 640 x 480. Tra l'istruzione lock e l'istruzione unlock potete modificare o ricevere i colori tramite l'array dati. Qualsiasi modifica ad esso influenzerà la superficie (puntatori). L'accesso alla memoria si rivela particolarmente utile per l'elaborazione a livello di pixel dell'immagine. Nel mio esempio l'immagine viene fatta diventare semplicemente rossa.