![]() |
![]() ![]() ![]() ![]() |
|
Получить цвет обратный указанномуDelphi , Графика и Игры , Цвета и ПалитраПолучить цвет обратный указанному
Оформил: DeeCo
procedure EdBackColor(FontC: TColor; var EditableColor,
ReadOnlyColor: TColor);
// Calculate the luminance of the color using the simplified formula
// luminance = 0.25*red + 0.625*green + 0.125*blue
// If greater than 0.5, use a dark background
var
R, G, B: Integer;
begin
R := GetRValue(FontC) * 2;
G := GetGValue(FontC) * 5;
B := GetBValue(FontC);
if R + G + B < 1024 then
begin
EditableColor := clWhite;
ReadOnlyColor := clSilver;
end
else
begin
EditableColor := clBlack;
ReadOnlyColor := clDkGray;
end;
end;
Приведенный код на Delphi - процедура Вот шаг за шагом, что код делает:
Расчет луминанса основан на предположении, что цвет с высоким луминансом (то есть светлый цвет) должен иметь темное фоновое изображение, а наоборот. Это общая техника, используемая в многих графических пользовательских интерфейсах для улучшения читаемости и доступности. Вот альтернативное решение с более современным и читаемым кодом: В этом варианте я использовал более описательные имена переменных, а также убрал ненужные точки с запятой. Логика осталась той же, что и в оригинальном коде, но теперь она более легко читается и понимается. Процедура EdBackColor возвращает цвета обратные указанному, используя формулу расчета луминанса и определяя светлый или темный фон в зависимости от результата. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш :: Главная :: Цвета и Палитра ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||