C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Определить составляющие RGB, для цвета clBtnFace
Deem
Отправлено: 25.06.2004, 10:16


Мастер участка

Группа: Участник
Сообщений: 327



Хочу сделать перелив на форме от clBtnFace до clBtnShadow. Однако, эти константы имеют значение 15 и 16. Как определить реальное соответствие этим цветам составляющих RGB?
AVC
Отправлено: 25.06.2004, 10:40


Ветеран

Группа: Модератор
Сообщений: 1583



Ноги растут отсюда
(Win2000) HKEY_CURRENT_USER\Control Panel\Colors
Doga
Отправлено: 25.06.2004, 11:28


Мастер участка

Группа: Участник
Сообщений: 575



CODE

TColor Color1 =  clBtnFace;

int R1;
int G1;
int B1;

R1 = GetRValue(ColorToRGB(Color1));  //Красный
G1 = GetGValue(ColorToRGB(Color1));  //Зелёный
B1 = GetBValue(ColorToRGB(Color1));  //Синий
Deem
Отправлено: 29.06.2004, 10:36


Мастер участка

Группа: Участник
Сообщений: 327



Спасибо. Все классно работает.
Кто хочет градиентную заливку для формы, нате.
(Вызывать в OnPaint biggrin.gif )
CODE


void __fastcall TForm1::GradientBackground()
{
  double R1,R2;
  double G1,G2;
  double B1,B2;
  TColor Color1 = clBtnFace,
             Color2 = clBtnShadow;

  R1 = GetRValue(ColorToRGB(Color1));  
  G1 = GetGValue(ColorToRGB(Color1));
  B1 = GetBValue(ColorToRGB(Color1));

  R2 = GetRValue(ColorToRGB(Color2));
  G2 = GetGValue(ColorToRGB(Color2));  
  B2 = GetBValue(ColorToRGB(Color2));  

  float RStep,GStep,BStep;
  int Y;

  RStep = (R2 — R1) / (float)ClientRect.Bottom;
  GStep = (G2 — G1) / (float)ClientRect.Bottom;
  BStep = (B2 — B1) / (float)ClientRect.Bottom;

  for (Y = 0; Y < ClientRect.Bottom; Y++)
    {
      Canvas->Pen->Color = RGB(R1, G1, B1);
      Canvas->MoveTo(0,(int)(Y));
      Canvas->LineTo(ClientRect.Right+1,(int)(Y ) );
      R1 += RStep;
      G1 += GStep;
      B1 += BStep;
    };
}


Может, через контекст устройства быстрее работает (как мелкософт советует).



Отредактировано Deem — 29/06/2004, 12:02

Вернуться в Вопросы программирования в C++Builder