Элемент управления кнопки и базовая замена TBitmap, который правильно обрабатывает прозрачность PNG без предварительной записи -blend code

Delphi 2010 TSpeedButtons поддерживает похоже, что на самом деле не поддерживает прозрачность PNG должным образом, потому что свойство Glyph использует TBitmap внутренне, а TBitmap предназначено для растровых изображений и не поддерживает должным образом прозрачность PNG, а TSpeedButton.Glyph не может поддерживать прозрачность .. обновление: Но на самом деле проблема заключалась в том, что у меня был какой-то внешний материал (компоненты Developer Express), который рендерил поддержку PNG delphi нефункциональной, с другой стороны, TImage, хотя он все еще TPicture и может поддерживать PNG, также пострадал от этого Deve ошибка loper express.

Здесь уже задавался вопрос о , и в ответе показано, как использовать предварительное смешивание, чтобы прозрачность не превращалась в черные пиксели. Я хочу знать, есть ли другой элемент управления кнопки, который будет использовать PNG с альфа-смешением, загруженный во время разработки, и который не преобразует ресурсы PNG в формат BMP, отбрасывая альфа-канал и вызывая показанную здесь черную рамку.

Короче , этот элемент управления не будет использовать TBitmap и не будет использовать функцию прозрачности цветового ключа, которая есть у TBitmap.

Повторюсь, я не спрашиваю, как решить проблему черного вокруг внешней стороны, все еще используя выход -современная функциональность VCL на основе TBitmap / TSpeedButton, поскольку в ней отсутствуют современные функции прозрачности PNG, я прошу заменить ее чем-то другим, что «просто работает».

В качестве вторичного недостатка преобразование небольшого файла .png в формат Ресурс растрового изображения .DFM по существу тратит пространство и делает содержимое моей формы .DFM слишком большим. Собственное хранилище файлов в формате .png в .dfm должно уменьшить размеры получаемых форм.

enter image description here

Обновление: PngComponents выглядят так, как будто они должны работать, но я получил ошибку Недопустимый графический формат при попытке загрузите png в кнопку скорости Png. Обратите внимание, что компонент списка изображений Png не имеет таких проблем. Кажется, что cxLibrary (экспресс-пакет для разработчиков) ломает вещи. Как только я удалил все экспресс-материалы для разработчиков, эта проблема исчезла. Поэтому, хотя я выбрал Pngcomponents в качестве ответа, если у вас установлены компоненты devex, используйте вместо них их кнопки, а не pngcomponents.

enter image description here

15
задан Community 23 May 2017 в 09:59
поделиться