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

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


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

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

DELPHIMASTER.ru

Выпуск от 29.09.04 09:18

Лучшее из нашего 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,Pe rcent,100);  //процент% уменьшения яркости
g! :=g-muld iv(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|
  • Как проиграть видео-файл?
    Подскажите, пожалуйста, как запустить проигрывание AVI-файла без использования MediaPlayer? Например, чтобы включить ...
  • fkCalculated ???
    Есть некий DataModule. В нем есть Query у которого SQL = 'select * from table'. В таблице table есть мемо поле fMemo. ...
  • ТАймер
    Пацаны, помогите pls, как сдалать таймер обратного отсчёта? (задаю 3 часа, и он попёр: 02:59, 02:58, 02:57.......)
  • TidHTTP.Request: как юзать ContentRangeStart и ContentRangeEnd
    Я знаю, что эти свойства определяют размер получаемого ответа в байтах. Сколько надо задать, чтоб получать 1 байт?
  • Доработка KOLReport
    Народ есть интересная тема, но боюсь, что один не осилю. Смысл затеи в том, чтобы научить KOLReport строиться по ...
  • ActiveX
    Не подскажите ли, где можно найти описание по созданию и использованию ActiveX с примерами. Начальный уровень изучения.
  • Разная работа приложения в 9х/ХР
    Из ресурсов главного приложения загружается (+импорт, релоки...) и запускается одтельным тредом обычное WinAPI ...
У нас большой выбор статей   |x|
Эволюция средств разработки Web приложений в Delphi
Бурный рост интернета в последние годы привел к возможности и необходимости создания информационных систем, не требующих настройки и обслуживания на стороне клиента и при этом обеспечивающих одновременную работу большого количества пользователей...
На сегодня существуют, как минимум, три технологии разработки Web приложений в Delphi...
Новинки книжного рынка   |x|
Хитрости Windows XP: Для профессионалов
Эта книга написана «тем самым специалистом», к которому обращаются люди, когда у них возникают проблемы с компьютером. Чаще всего причиной проблемы является Microsoft Windows — программный продукт, к которому многие питают одновременно и любовь, и ненависть. Значительная часть этой книги — ответы на вопросы, которые задают пользователи. Чем лучше знаком мастер со своим инструментом, тем продуктивнее его работа. В нашем случае таким инструментом является Microsoft Windows XP. Книга предназначена для широкого круга пользователей и специалистов.
Автор: Карп Д. А.
Опрос населения :)
Как часто вы заглядываете на наш сайт?
»»» Регулярно
»»» Раз в неделю
»»» Когда нужна помощь
»»» По почтовой рассылке
»»» Сделал стартовой страницей
Для души

Хокку дня
Слово скажу -
Леденеют губы.
Осенний вихрь!

Афоризмы
Добро побеждает зло... его же оружием.

Фраза дня
Вечнозеленая тоска

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

И на закуску коротенький анекдот
Встречаются как то два мужика...(1) , (2)
(1) Представляешь прихожу домой открываю шкаф, а там мужик голый!
(2) Hичего удивительного...
(1)Как ничего???? Я же не женат!

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


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

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

http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.mdelphi
Отписаться

В избранное