С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.86
CAYOT
0 / 0 / 0
Регистрация: 10.10.2009
Сообщений: 26
#1

Найти темный и светлый цвет RGB - C++

09.11.2009, 00:06. Просмотров 1970. Ответов 7
Метки нет (Все метки)

есть RGB цвет...надо найти ее темный и светлый цвет..

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
ULONG CCWINDOW::Analizer(COLORREF color,UINT kind)
{
    //0 Svetliy
 
    UCHAR R,G,B;
 
    R = GetRValue(color);
    G = GetGValue(color);
    B = GetBValue(color);
 
    if(kind==0)
    {
        return RGB((R+64<255?R+=64:255),(G+64<255?G+=64:255),(B+64<255?B+=64:255));
    }
    else
    {
        return RGB((R-64>0?R-=64:0),(G-64>0?G-=64:0),(B-64>0?B-=64:0));
    }
        
 
}
он хорошо работает только в средних цифрах скажем..
RGB(160,180,100);
но скажем при этом
RGB(255,255,255);
получается некрасивый цвет..
дайте пожалуйста совет,алгоритм..или если не трудно код к этой задаче...
зарание спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2009, 00:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти темный и светлый цвет RGB (C++):

Найти приблизительный цвет RGB - C++
Добрый вечер, пытаюсь написать бота для игры, есть код: HDC hdc=GetDC(Handle_ArcheAge); COLORREF c = GetPixel (hdc, 110, 39); //...

Получить цвет пикселя в RGB - C++
Здравствуйте, как можно получить цвет пикселя в RGB ? Желательно с использование библиотеки png++

Получить цвет каждого пикселя изображения, разбив на уровни RGB - C++
Нужно получить цвет каждого пикселя изображения, разбив на уровни RGB. Как реализовать подобное?

Написать программу, которая будет определять цвет пикселя под курсором и выводить на экран этот цвет - C++
Хочу написать программу, кот. будет определять цвет пикселя под курсором и выводить на экран этот цвет словом или кодом или как лучше?...

Строка: Найти цвет/цвета предмета, введенного с клавиатуры. - C++
Помогите с решением! Дан 3-х мерный инициализированный массив символов (6 строк, 2 столбца, 20 символов) const int N=6, J=2, I=20; ...

Цвет в цветовой схеме RGB – определить “средний цвет” - C (СИ)
2. Описать структуры для хранения описания объектов и функции выполняющие вычисления для массива структурного типа : - цвет в цветовой...

7
Adler
78 / 78 / 3
Регистрация: 07.05.2009
Сообщений: 316
09.11.2009, 03:36 #2
каждый канал приведи к float и умнож его на число K, потом обрежь результат, что бы вписывался в диапазон 0..255, вот это и будет конечным значением канала. для осветления делай K больше чем 1, для затемнения меньше чем 1.
0
CAYOT
0 / 0 / 0
Регистрация: 10.10.2009
Сообщений: 26
09.11.2009, 13:18  [ТС] #3
спасибо..еще предложение?
0
CAYOT
0 / 0 / 0
Регистрация: 10.10.2009
Сообщений: 26
11.11.2009, 18:57  [ТС] #4
тут что реальные программеры не заходят?а то это единственное предложение будет работать только при средних цифрах..
0
blackswan
13 / 13 / 0
Регистрация: 08.07.2009
Сообщений: 61
11.11.2009, 19:02 #5
я вообще не понял задачу, что значит темный и светлый цвет? самую темную и самую светлую точку? самое простое - это искать минимум и максимум по всем трем компонентам, а точнее сумму минимальную и максимальную. или же корень из суммы квадратов искать.
0
CAYOT
0 / 0 / 0
Регистрация: 10.10.2009
Сообщений: 26
12.11.2009, 11:12  [ТС] #6
мне нужен светлый и темный цвет каковато цвета.!


мне надо что то типо этого только с анализами покруче...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
ULONG CCWINDOW::Analizer(COLORREF color,UINT kind,double K)
{
    int mug, bac;
    mug = (int)((double)44*K);
    bac = (int)((double)64*K);
    
    int korr, korr2;
 
    korr=10;
    korr2=20;
 
    ULONG NewColor;
 
    UCHAR R,G,B;
 
    R = GetRValue(color);
    G = GetGValue(color);
    B = GetBValue(color);
 
    if (R+B+G < 255)
        bac*=1.3;
 
    if (R+B+G >500)
        bac*=0.8;
 
 
 
    if (R+B+G <75)
        mug*=1.3;
 
    if (R+B+G >75&&R+B+G <150)
        mug*=1.2;
 
 
        if ( abs((int)R-(int)G) < korr2  && abs((int)R-(int)B) <korr2  && abs((int)B-(int)G) <korr2 )
            korr=0;
 
        if (kind==0)
        {
            if (R>=G && R>=B)
            {
                  if (R+bac>255) {bac+=R+bac-255; R=255; } else R+=bac;
                  if (G+bac+korr>255) {bac+=G+bac+korr-255; G=255; } else G+=bac+korr;
                  if (B+bac-2*korr>255) B=255; else B+=bac-2*korr;
                  
                  return RGB(R,G,B);
            }
    
            if (G>=R && G>=B)
            {   
                  if (G+bac>255) {bac+=G+bac-255; G=255; } else G+=bac;
                  if (R+bac+korr>255) {bac+=R+bac+korr-255; R=255; } else R+=bac+korr;
                  if (B+bac-2*korr>255) B=255; else B+=bac-2*korr;
 
                  return RGB(R,G,B);
            }
  
            if (B>=G && B>=R)
            {
                  if (B+bac>255) {bac+=B+bac-255; B=255; } else B+=bac;
                  if (G+bac+korr>255) {bac+=G+bac+korr-255; G=255; } else G+=bac+korr;
                  if (R+bac-2*korr>255) R=255; else R+=bac-2*korr;
            
                  return RGB(R,G,B);
            }
 
 
        }
        else
        {
 
            if (R>=G && R>=B)
            {
                  if (R-mug<0) {mug+=abs((int)R-mug); R=0;} else R-=mug;
                  if (G-mug-korr<0) {mug+=abs((int)G-mug-korr); G=0; } else G-=mug-korr;
                  if (B-(mug+2*korr)<0) B=0; else B-=mug+2*korr;
                  
                  return RGB(R,G,B);
            }
    
        }
    
 
 
        
 
}
0
M128K145
Эксперт С++
8300 / 3520 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
12.11.2009, 17:50 #7
Обсуждения того кто какой программист проводите в ЛС, а здесь только по теме.

Не по теме:

ЗЫ. CAYOT, количество ответов не говорит о том какие здесь программисты. На самом деле причин много, хотя бы обычная занятость

0
CAYOT
0 / 0 / 0
Регистрация: 10.10.2009
Сообщений: 26
12.11.2009, 19:11  [ТС] #8
ну все таки кто может на этот вопрос ответить...???

Добавлено через 1 минуту
не лучше ли вместо того учит как на форуме общаца дай ответ если не трудно....
0
12.11.2009, 19:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2009, 19:11
Привет! Вот еще темы с ответами:

Черный (темный) цвет окон - Windows 8, 8.1
Всем здрасте.) Очень люблю черный цвет и решил сделать у окон в windows 8 тоже черного цвета и тут появилась проблема с названием окна...

Изменить цвет выделения строки на более темный - C#
Всем привет! Кто нибудь знает, как задать цвет таким образом, чтоб он был другого оттенка? Вот например, у меня есть строка таблицы,...

Цвет в OLE_COLOR, в RGB и в HTML - Visual Basic
Скажите, как перевести значение цвета OLE_COLOR &lt;-&gt; RGB &lt;-&gt; HTML? Или хотя бы намекните, какова природа цифр в windows цветах.

Вернуть цвет пикселя в RGB - Delphi
Добрый день. Как зная координаты пикселя на Image1 или Форме получить цвет этого пикселя?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.