08/04/09 19:01
GrG
ecco allego un progetto che rispecchia (a mio parere) pienamente quello ke vuoi fare.
aaa
08/04/09 20:10
Alceus
Piu semplicemente puoi usare questa sub che ho elaborato prendendo spunto da un altro forum.
In un form un CommandButton (Command1) e due PictureBox (Picture1 e Picture2)
Private Declare Function SetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal crColor As Long) As Long
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long
Private Sub OttieniColore(PictureInput As PictureBox, PictureOutput As PictureBox)
Dim color As Long
ReDim r(PictureInput.ScaleWidth, PictureInput.ScaleHeight) As Long, g(PictureInput.ScaleWidth, PictureInput.ScaleHeight) As Long, b(PictureInput.ScaleWidth, PictureInput.ScaleHeight) As Long
PictureOutput.Width = PictureInput.Width
PictureOutput.Height = PictureInput.Height
PictureInput.ScaleMode = vbPixels
PictureOutput.ScaleMode = vbPixels
For X1 = 0 To PictureInput.ScaleWidth 'scrive negli array r, g, b i numeri corrispondenti al colore di ogni singolo pixel della pictureinput nei tre fattori della scala RGB
For Y1 = 0 To PictureInput.ScaleHeight
color = GetPixel(PictureInput.hdc, X1, Y1)
r(X1, Y1) = color And &HFF
g(X1, Y1) = (color And &HFF00&) \ &H100&
b(X1, Y1) = (color And &HFF0000) \ &H10000
Next Y1
Next X1
For X2 = 0 To PictureOutput.ScaleHeight 'riempie i pixel della pictureoutput a seconda dei colori dei pixels della pictureinput
For Y2 = 0 To PictureOutput.ScaleHeight
SetPixel PictureOutput.hdc, PictureOutput.ScaleWidth - X2 - 1, Y2, RGB(r(X2, Y2), g(X2, Y2), b(X2, Y2))
Next Y2
Next X2
End Sub
Private Sub Command1_Click()
OttieniColore Picture1, Picture2
End Sub
Ultima modifica effettuata da Alceus 08/04/09 20:14
aaa
09/04/09 8:56
azz.ciccio
si, perfetto, questo spezzone di codice va meglio!
grazie.
A.
aaa