Delphi 2010 TSpeedButtons, похоже, действительно не поддерживает прозрачность PNG должным образом, потому что свойство Glyph использует TBitmap для внутреннего использования, а TBitmap для растровых изображений и не поддерживает прозрачность PNG должным образом, а TSpeedButton.Glyph не может поддерживать прозрачность.. обновление: Но на самом деле проблема заключалась в том, что у меня были некоторые внешние вещи (компоненты Developer Express), которые делали поддержку Delphi PNG неработоспособной, с другой стороны, TImage, хотя он все еще TPicture и может поддерживать PNG, былтакже подвержена этой экспресс-ошибке разработчика.
Был уже задан вопрос о здесь , и ответ показывает, как использовать предварительное смешивание, чтобы прозрачность не превратилась в черныйпиксели.Я хочу знать, есть ли другой элемент управления кнопки, который будет использовать альфа-смешанные PNG, загруженные во время разработки, и который не преобразует ресурсы PNG в формат BMP, отбрасывая альфа-канал и вызывая черную границу, показанную здесь.
Короче говоря, этот элемент управления не будет использовать TBitmap и не будет использовать функцию прозрачности цветового ключа, которой обладает все TBitmap.
Повторюсь, я не спрашиваю, как решить проблему черного цвета вокруг.проблема при использовании устаревшей функциональности VCL на основе TBitmap / TSpeedButton, поскольку в ней отсутствуют современные функции прозрачности PNG, я прошу заменить ее на что-то еще, что «просто работает».
В качестве вторичного недостаткаПреобразование небольшого файла .png в ресурс растрового изображения .DFM, по сути, приводит к бесполезному расходованию пространства и делает мой формат .DFM слишком большим.Собственное хранилище формата файлов .png в формате .dfm должно уменьшить размер получаемых форм.
Обновление: Компоненты Png выглядят так, как будто они должны работать, но я получилошибка Invalid Graphic format
, когда я пытаюсь загрузить png в кнопку Png speed.Обратите внимание, что компонент списка изображений Png не имеет таких проблем.Похоже, что cxLibrary (пакет разработчика Express) ломает вещи.После того, как я удалил все материалы для разработчиков, эта проблема исчезла.Поэтому, хотя я выбрал Pngcomponents в качестве ответа, если у вас установлен devex, используйте вместо этого их кнопки, а не pngcomponents.