Обрезка диафильма в формате png (Delphi 2010) - PullRequest
3 голосов
/ 17 июня 2011

У меня есть полоса изображений в формате png, например: filmstrip

Я хотел бы знать, как обрезать каждое из изображений и поместить эти изображения в элемент управления TImageList, всегда сохраняя прозрачность,

[РЕДАКТИРОВАТЬ]

Да, во время разработки трюк, упомянутый RRUZ, работает нормально, но я хотел обрезать изображения во время выполнения, то есть путем загрузки диафильма из ресурса или файла

Ответы [ 3 ]

4 голосов
/ 18 июня 2011

Вы должны выполнить следующие действия:

  • установить для свойства ColorDepth значение cd32Bit,

  • DrawingStyle до dsTransparent,

  • Height = 48,

  • Width = 48,

затемзагрузить изображение и результат будет

enter image description here

1 голос
/ 21 июня 2011

Во время выполнения вам придется вызывать TImageList.FileLoad.За исключением того, что это не будет работать.

Это в свою очередь вызывает ImageList_LoadImage со значением параметра uFlags, включая бит LR_LOADFROMFILE, который заставляет Windows загружаться из файла на диске.Эта базовая функциональность поддерживает только формат TBitmap (BMP).

См. почти дублированный вопрос .Поддержка PNG - это функция времени разработки, которая преобразует данные PNG во внутренний формат не-PNG и не совсем-BMP-любой, используемый внутри библиотеки MS Common Controls.Рассмотрите свой DFM как текст, и вы увидите, во что были превращены ваши входы PNG.Другие ответы показывают, что прозрачность сохраняется с использованием прозрачности на основе растрового цвета.

Если вы хотите сохранить свои данные в формате PNG, вам не следует использовать VCL TImageList для их хранения, потому что вы 'нам придется выполнить преобразование из PNG в TBitmap, чтобы фактически использовать TImageList.

1 голос
/ 18 июня 2011

Просто импортируйте в список изображений.Он будет жаловаться, что он слишком большой, и предложит разбить его на кусочки для вас.У меня отлично работает на D2005.

Еще один крутой совет: я использую AWIcons Pro http://www.awicons.com/icon-editor/ для редактирования иконок (хороший редактор!).Он имеет функцию, которая может экспортировать значок в виде списка изображений (в формате .bmp или .png), что позволяет сделать полоску из значка.Это делает его действительно удобным для редактирования в формате .ico, с серией ячеек одинакового размера и глубины, причем каждая ячейка слегка изменяется.Затем вы экспортируете как список изображений (я использую .png), а затем Delphi может разбить их обратно на отдельные ячейки.Очень гладкоAWIcons не бесплатен, но такие функции действительно делают его продуктивным.

...