беру цвет в точке, как мне узнать оттенок?
например точного цвета нет, но идут оттенки красного, и черного(серого)... как отследить это изменение? может какая таблица цветов есть?
Public Sub GetRGB(ByVal Color As Long, Red As Byte, Green As Byte, Blue As Byte)
Dim c As Long
c = (Color And &HFF&)
Red = CByte(c)
c = ((Color And &HFF00&) / &H100&)
Green = CByte(c)
c = ((Color And &HFF0000) / &H10000)
Blue = CByte(c)
End Sub
Dim R as Byte, G as Byte, B as Byte
GetRGB 5922138,R,G,B
Msgbox R & " " & G & " " & B
Private Sub CommandButton_Click()
Dim Color&, R&, G&, B&, S$, Flags(5) As Boolean
Color = CLng(InputBox("Введите цвет"))
R = Color And &HFF&
G = (Color And &HFF00&) / &H100&
B = (Color And &HFF0000) / &H10000
Me.BackColor = Color
If (Abs(R - G) <= 20 Or Abs(G - B) <= 20 Or Abs(R - B) <= 20) And _
(R / G) < 1.5 And (R / B) < 1.5 And (G / B) < 1.5 And (G / R) < 1.5 And (B / R) < 1.5 And (B / G) < 1.5 Then S = S & "Оттенок серого" & vbCrLf
If (R / G) > 1.625 And (R / B) > 1.625 Then S = S & "Оттенок красного" & vbCrLf: Flags(0) = True
If (R / G) < 1.625 And (R / B) > 1.625 Then S = S & "Оттенок желтого" & vbCrLf: Flags(1) = True
If (R / G) > 1.625 And (R / B) < 1.625 Then S = S & "Оттенок фиолетового" & vbCrLf: Flags(2) = True
If (G / R) > 1.625 And (G / B) > 1.625 Then S = S & "Оттенок зеленого" & vbCrLf: Flags(3) = True
If (G / R) > 1.625 And (G / B) < 1.625 Then S = S & "Оттенок цвета морской волны" & vbCrLf: Flags(4) = True
If (B / R) > 1.625 And (B / G) > 1.625 Then S = S & "Оттенок синего" & vbCrLf: Flags(5) = True
If (R / G) > 1.425 And (R / B) > 1.425 And Not Flags(0) Then S = S & "Возможно, оттенок красного" & vbCrLf
If (R / G) < 1.425 And (R / B) > 1.425 And Not Flags(1) Then S = S & "Возможно, оттенок желтого" & vbCrLf
If (R / G) > 1.425 And (R / B) < 1.425 And Not Flags(2) Then S = S & "Возможно, оттенок фиолетового" & vbCrLf
If (G / R) > 1.425 And (G / B) > 1.425 And Not Flags(3) Then S = S & "Возможно, оттенок зеленого" & vbCrLf
If (G / R) > 1.425 And (G / B) < 1.425 And Not Flags(4) Then S = S & "Возможно, оттенок цвета морской волны" & vbCrLf
If (B / R) > 1.425 And (B / G) > 1.425 And Not Flags(5) Then S = S & "Возможно, оттенок синего" & vbCrLf
MsgBox Color & vbCrLf & S
End Sub
Сейчас этот форум просматривают: SemrushBot и гости: 26