Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Мастера DELPHI. Новости мира компонент, FAQ, статьи...


Информационный Канал Subscribe.Ru

Ежедневная рассылка сайта Мастера DELPHI

DELPHIMASTER.ru

Выпуск от 09.02.04 18:51

Лучшее из нашего FAQ   |x|
Как сделать стандартные цвета в Delphi светлее или темнее
Показаны принципы получения из обычного цвета более тёмный или более светлый.
Итак, немного теории:
Каждый из трёх основных цветов (Красный,Зелёный,Синий) могут иметь значение от 0 до 255, соответственно скомбинировав их мы можем получить 16,777,216 возможных цветов. Визуально это можно предствить как три оси куба, в котором направления x, y и z отвечают за цвета красный, зелёный и синий. В сочетании эти направления дают точку в кубе, представляющую один цвет из 16 миллионов. Точка куба, в которой значение равняется 0 (0,0,0) соответствует чёрному цвету, значение (255,255,255) - белому цвету, (255,0,0) - чисто красному, и т.д.

Если визуально провести линию между каким-либо цветом (r,g,b) и белым цветом (255,255,255), то получится, что на этой линии будут лежать все значения данного цвета (r,g,b). Если мы будем двигаться по линии в сторону белого цвета, то яркость будет увеличиваться до тех пор пока не получим чисто белый цвет.

То же самое можно сделать и для уменьшения яркости цвета. Достаточно провести линию из цвета (r,g,b) в чёрный (0,0,0). То есть при движении по линии к чёрному цвету мы будем уменьшать яркость до тех пор, пока не получим чёрный цвет.

Функция "Darker" возвращает новое значение цвета, которое будет на сколько-то процентов темнее. Естевственно, что при 100% мы получим чёрный цвет.
Функция "Lighter" возвращает цвет, который светлее на сколько-то процентов исходного. 100% - белый цвет.

Функции Darker и Lighter требуют 2 параметра и используются примерно так:
Panel1.Color := Darker(clBlue,20);
Получется панель цветов, которая на 20% темнее обычного синего цвета.

Теперь давайте посмотрим, как выглядят внутри наши функции:

function Darker(Color:TColor; Percent:Byte):TColor;
var
 r,g,b:Byte;
begin
Color:=ColorToRGB(Color);
r:=GetRValue(Color);
g:=GetGValue(Color);
b:=GetBValue(Color);
r:=r-muldiv(r,Percent,100);  //процент% уменьшения яркости
g:=g-muldiv(g,Percent,100);
b:=b-muldiv(b,Percent,100);
result:=RGB(r,g,b);
end;

function Lighter(Color:TColor; Percent:Byte):TColor;
var
 r,g,b:Byte;
begin
Color:=ColorToRGB(Color);
r:=GetRValue(Color);
g:=GetGValue(Color);
b:=GetBValue(Color);
r:=r+muldiv(255-r,Percent,100); //процент% увеличения яркости
g:=g+muldiv(255-g,Percent,100);
b:=b+muldiv(255-b,Percent,100);
result:=RGB(r,g,b);
end;

Так же я добавил некоторые функции, в которых уже добавлены  тандартные значения процентов. Это для тех, кому некогда задумываться над процентами :)

Panel1.Color := Light(clBlue);
Panel1.Color := SlightlyDark(clRed);
Panel1.Color := VeryLight(clMagenta);
etc.

function SlightlyDark(Color:TColor):TColor;
begin
 Result := Darker(Color,25);
end;

function Dark(Color:TColor):TColor;
begin
 Result := Darker(Color,50);
end;

function VeryDark(Color:TColor):TColor;
begin
 Result := Darker(Color,75);
end;

function SlightlyLight(Color:TColor):TColor;
begin
 Result := Lighter(Color,25);
end;

function Light(Color:TColor):TColor;
begin
 Result := Lighter(Color,50);
end;

function VeryLight(Color:TColor):TColor;
begin
 Result := Lighter(Color,75);
end;

Автор: Den Bedard

»»» Прислать свои комментарии

Обсуждается в конференциях   |x|
  • Завершение работы с GLUT
    Когда я закрываю окно созданое с помощю GLUT, процесс остаётся висеть в памяти. Как добиться нормального закрытия окна? ...
  • Как дописать в файл?
    reWrite -? Пользуюсь: assignfile(f1,'c:\info.dat'); reWrite(f1,1); BlockWrite(f1,buff,sizeOf(buff)); ...
  • Как записать кординаты где я мышю щелкнул
    Как записать кординаты где я мышю щелкнул
  • Рисование на форме
    Мастера, подскажите наиболее быстрый способ рисования (рисунок покрывает всю форму) на форме (чтоб, когда запускалась ...
  • IdTCPClient
    Что можно сделать, что бы он не вешал приложение при коннекте, если удалённый хост долго (или совсем) не отвечает?
  • Как получить сообщение?
    В DLL ставлю глобальный хук WH_GETMESSAGE. Как получить информацию о сообщении, которое перехватывается (т.е. что нужно ...
  • Помогите настроить WebConnection
    Не понимаю я с его параметрами нифига... Особенно с URL. Пытался дать ему http://127.0.0.1/C:...
У нас большой выбор статей   |x|
ЛОВИМ БАГИ или ПОЧЕМУ ПРОГРАММЫ ДОПУСКАЮТ "НЕДОПУСТИМЫЕ ОПЕРАЦИИ"
Ошибки - неизбежное зло программирования. Видимо пока трудно даже представить средство с помощью которого можно избавится от них. Человеку, которые выдумает это чудодейственное лекарство, благодарные потомки-программисты, несомненно, воздвигнут памятник. Пока же остается лишь заниматься обычным делом: ловлей багов.
Новинки книжного рынка   |x|
Экстремальное программирование
Эта книга об экстремальном программировании. Экстремальное программирование, часто обозначаемое аббревиатурой «XP» — это упрощенная методика организации производства для небольших и средних по размеру команд разработчиков, занимающихся разработкой программного продукта в условиях неясных или быстро меняющихся требований. Данная книга предназначена для того, чтобы помочь вам определить, оправдано применение XP в вашей ситуации или нет.
Автор: Kent Beck
Другие сайты о DELPHI   |x|
Делаем игры
Заходи на этот сайт и узнай как делать игры на delphi.

» Оценка сайта: 3
Опрос населения :)
Как часто вы заглядываете на наш сайт?
»»» Регулярно
»»» Раз в неделю
»»» Когда нужна помощь
»»» По почтовой рассылке
»»» Сделал стартовой страницей
Для души

Хокку дня
Все тот же бренный мир,
Пьянея, плачу
В сумерках осенних.

Афоризмы
Знание - сила, всезнание - слабость....

Фраза дня
Лучше плохо, чем никогда.

Дурацкие законы (информация предоставлена сайтом kurilka.com)
Во Флориде (США) если вы оставите слона на улице на месте, предназначенном для парковки, вам придется платить за него как за запаркованный автомобиль.
В городе Кейп Корал (США) особым постановлением запрещено сушить белье на веревках.

И на закуску коротенький анекдот
Вслед за водкой и проституток обложили таким высоким налогом, что бедняжки вынуждены продавать себя ниже себестоимости!

Фотоприколы.
Начните день с хорошего настроения!
http://www.delphimaster.ru/cgi-bin/prikol.pl?id=1632


На этом позвольте откланяться и пожелать вам удачного дня.
Искренне ваш, Алексей (merlin@delphimaster.ru)

Добро пожаловать на сайт -= Мастера DELPHI =- 


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное