Public Declare Function GetPixel Lib "gdi32" ( _
ByVal hDC As Long, _
ByVal X As Long, _
ByVal Y As Long) As Long
Public Declare Function SetPixel Lib "gdi32" ( _
ByVal hDC As Long, _
ByVal X As Long, _
ByVal Y As Long, _
ByVal crColor As Long) As Long
Public Sub GrayScale(ByRef picSRC As PictureBox, ByRef picDST As PictureBox)
Dim Y As Integer, X As Integer
Dim c As Long, R As Long, v As Long, G As Long, B As Long
picDST.Width = picSRC.Width
picDST.Height = picSRC.Height
picDST.AutoRedraw = False
Dim luma As Long
For Y = 0 To picSRC.ScaleHeight
For X = 0 To picSRC.ScaleWidth
c = GetPixel(picSRC.hDC, X, Y)
Call GetRGB(c, R, G, B)
luma = CInt(R * 0.3 + G * 0.59 + B * 0.11)
Call SetPixel(picDST.hDC, X, Y, RGB(luma, luma, luma))
Next X
Next Y
End Sub
'Get R G B values / récupère les couleurs R V B
Public Sub GetRGB(ByVal Color As Long, ByRef R As Long, ByRef G As Long, ByRef B As Long)
B = ((((Color \ 65536) And 255) * 50) + (((Color \ 65536) And 255) * 50)) \ 100
G = ((((Color \ 256) And 255) * 50) + (((Color \ 256) And 255) * 50)) \ 100
R = (((Color And 255) * 50) + ((Color And 255) * 50)) \ 100
End Sub