Как избежать того, что в некоторых видео режимах прозрачная часть glyphа стандартного TBitBtn становится виднойDelphi , Графика и Игры , Компоненты и ГрафикаКак избежать того, что в некоторых видео режимах прозрачная часть glyphа стандартного TBitBtn становится виднойВ примере используется техника закраски прозрачной части glyph'а цветом кнопки на которой он находится - таким образом glyph кажется прозрачным.
Проблема, с которой вы столкнулись, заключается в том, что прозрачная часть глифа (например, кнопка "ОК") становится видимой при изменении видеорежима, что может не быть желаемым. Для избежания этого можно использовать технику называемую "color keying", чтобы маскировать прозрачные части глифа цветом кнопки. В вашем коде вы уже используете схожий подход, создавая второй битов (Bm2) и заполняете его цветом лица кнопки (ClBtnFace). Однако, этот метод имеет некоторые ограничения. Например, он может не работать правильно, если глиф содержит сложные формы или анти-алиасированные края. Альтернативным решением может быть использование alpha blending вместо color keying. Alpha blending позволяет вам композитить глиф над фоновым изображением с альфа-каналом (маской прозрачности). Таким образом, вы можете достичь более точных результатов и избежать видимых артефактов при изменении видеорежима. Вот модифицированная версия вашего кода, которая использует alpha blending:
В этом модифицированном коде мы устанавливаем свойство Обратите внимание, что это подход требует графического контекста, поддерживающего alpha blending, например, системы Windows 10 или новее с соответствующим GPU. Если вам нужно поддерживать более старые системы, вы можете предпочесть использовать технику color keying или исследовать другие альтернативы. В статье описывается метод, позволяющий избежать видимости прозрачной части glyph standardного TBitBtn в некоторых видео режимах, путем закраски этой части цветом кнопки. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Компоненты и Графика ::
|
|||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |