Определение цвета: белый или черный? - VB
Формулировка задачи:
Есть у меня фон, оперделяемый юзером. Как прикинуть его яркость по RGB, например, чтобы принять решение печатать мне на нем белым или черным.
Т.е фон темный или светлый?
Ясен перец, что просто просуммировать составляющие RGB нельзя, ибо "G" в яркость вносит гораздо больший вклад, чем "B".
Кстати, может есть пример, как сами винды определяют цвет подписи (Ч или Б) к иконкам на рабочем столе, в зависимости от выбранной юзером заливки?
Решение задачи: «Определение цвета: белый или черный?»
textual
Листинг программы
Option Explicit Private Declare Function GetSysColor Lib "user32" (ByVal nIndex As Long) As Long Private Sub Command1_Click() Dim C As Long, R As Integer, G As Integer, B As Integer C = Me.BackColor SplitRGB C, R, G, B '381= (3 x 127) If R + G + B > 381 Then Text1.BackColor = vbBlack Else Text1.BackColor = vbWhite End If End Sub Sub SplitRGB(ByVal Color As Long, R As Integer, G As Integer, B As Integer) If Color And &H80000000 Then Color = GetSysColor(Color And &HFF) End If R = Color And 255 Color = Color 256 G = Color And 255 B = Color 256 End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д