Ho fatto qualche prova di settaggio di pixel seguendo alcuni esempi trovati sul web. Questa l'API utilizzata
codice:
Private Declare Function SetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal crColor As Long) As Long
Per gli esempi basta un FORM, un oggetto Picture (abbastanza largo) e un bottone...
Ho generato dei valori casuali per i colori dei pixel che poi ho rappresentato in un oggetto Picture1 (l'unico che abbia l'handle necessario alla SetPixel)
codice:
Private Sub Command1_Click()
Dim lXPos As Long
Dim lYPos As Long
Dim iRosso As Integer
Dim iVerde As Integer
Dim iBlu As Integer
For lXPos = 1 To 512 - 1 (non chiedetemi il perchè del -1)
For lYPos = 1 To 256 - 1
iRosso = CLng(Rnd(Rnd(0)) * 255)
iVerde = CLng(Rnd(Rnd(0)) * 255)
iBlu = CLng(Rnd(Rnd(0)) * 255)
SetPixel Picture1.hdc, lXPos, lYPos, RGB(iRosso, iVerde, iBlu)
Next lYPos
Next lXPos
End Sub
Pensavo di dover effettuare il refresh del Picture1 ma azzera la "stupenda" creazione tipo MISSONI...
Passo successivo.
Il termografo che devo utilizzare ha 16 sensori di larghezza per 32 di lunghezza
Adattando l'esempio appena esposto, ho ottenuto dei quadrati colorati per sensore (Aggiungo un altro bottone al form...)
codice:
Private Sub Command2_Click()
Dim iXSens As Integer
Dim iYSens As Integer
Dim arTemp(32, 16) As Long
Dim lXPos As Long
Dim lYPos As Long
Dim iRosso As Integer
Dim iVerde As Integer
Dim iBlu As Integer
' Riempio un array di valori casuali (32x16)
For iXSens = 1 To 32
For iYSens = 1 To 16
arTemp(iXSens, iYSens) = Rnd(Rnd(0)) * 37 ' 37 = Valore MAX del sensore (forse...)
Next iYSens
Next iXSens
' Riempio la Picture (per ogni sensore 16 pixel di lato)
For lXPos = 1 To 512 - 1
For lYPos = 1 To 256 - 1
' Determina il sensore in uso
iXSens = Int(lXPos / 16) + 1
iYSens = Int(lYPos / 16) + 1
' Calcola i colori da rappresentare (alcune seghe mentali...)
iRosso = arTemp(iXSens, iYSens) * 6.5
iVerde = 150
iBlu = 255 - (arTemp(iXSens, iYSens) * 6.5)
' Colora il pixel
SetPixel Picture1.hdc, lXPos, lYPos, RGB(iRosso, iVerde, iBlu)
Next lYPos
DoEvents
Next lXPos
End Sub
Ora il problema è:
come posso sfumare i colori dei vari pixel per rappresentare una figura più o meno omogenea e non un'immagine astratta alla Picasso
Il risultato dovrebbe essere questo (se riesco ad incollare l'immagine...)