Определение цвета: белый или черный? - 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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4 из 5
Похожие ответы