Получить цвет обратный указанному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 прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Цвета и Палитра ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |