Определение цвета: белый или черный? - VB

Узнай цену своей работы

Формулировка задачи:

Есть у меня фон, оперделяемый юзером. Как прикинуть его яркость по RGB, например, чтобы принять решение печатать мне на нем белым или черным. Т.е фон темный или светлый? Ясен перец, что просто просуммировать составляющие RGB нельзя, ибо "G" в яркость вносит гораздо больший вклад, чем "B". Кстати, может есть пример, как сами винды определяют цвет подписи (Ч или Б) к иконкам на рабочем столе, в зависимости от выбранной юзером заливки?

Решение задачи: «Определение цвета: белый или черный?»

textual
Листинг программы
  1. Option Explicit
  2.  
  3. Private Declare Function GetSysColor Lib "user32" (ByVal nIndex As Long) As Long
  4.  
  5. Private Sub Command1_Click()
  6.     Dim C As Long, R As Integer, G As Integer, B As Integer
  7.    
  8.     C = Me.BackColor
  9.     SplitRGB C, R, G, B
  10.            '381= (3 x 127)
  11.    If R + G + B > 381 Then
  12.         Text1.BackColor = vbBlack
  13.     Else
  14.         Text1.BackColor = vbWhite
  15.     End If
  16.  
  17. End Sub
  18.  
  19.  
  20.  
  21. Sub SplitRGB(ByVal Color As Long, R As Integer, G As Integer, B As Integer)
  22.     If Color And &H80000000 Then
  23.         Color = GetSysColor(Color And &HFF)
  24.     End If
  25.     R = Color And 255
  26.     Color = Color  256
  27.     G = Color And 255
  28.     B = Color  256
  29. End Sub

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


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

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

15   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы