TImage теряет загруженное изображение

Работает Турбо Делфи Про.

Я использую TImage для отображения изображения png.

Когда я перезапускаю Delphi и загружаю файл dpr, TImage все еще существует, но изображение теряется, что требует перезагрузки изображения перед компиляцией.

Сначала я подумал, что дело в пути, поэтому загрузил картинку из того же каталога, что и dpr, но это не помогло.

Что еще я могу попробовать?


person ChuckO    schedule 12.05.2010    source источник
comment
Я не думал, что в Turbo Editions есть поддержка PNG, я думал, что это было добавлено после Turbo Editions.   -  person Robert Love    schedule 12.05.2010
comment
@ Роберт Лав. Турбо Про имеет PNG. Я попробовал это с JPEG, и он сохранил изображение.   -  person ChuckO    schedule 12.05.2010
comment
В моем D2007 нет встроенной поддержки PNG (только графика PNG от DevExpress). Думаю, в D2006/Turbo ничего не изменилось.   -  person Uli Gerhardt    schedule 12.05.2010
comment
PNG ‹› JPEG, Delphi уже много лет поддерживает JPEG, но я думал, что PNG был добавлен в более позднюю версию Delphi. Попробуйте загрузить изображение во время выполнения, если это работает, то поддержка PNG есть в Turbo.   -  person Robert Love    schedule 12.05.2010
comment
Может быть, ваш DFM доступен только для чтения? Маловероятно, так как TImage прилипает, но кто знает? Если ничего не помогает, возможно, вы можете скопировать и вставить содержимое файла dfm после загрузки PNG.   -  person Cosmin Prund    schedule 12.05.2010


Ответы (2)


Попробуй это:

  • Откройте свой проект и форму с PNG.
  • (Повторно) Загрузите изображение PNG.
  • Сохраните и закройте форму.
  • С помощью текстового редактора загрузите форму DFM.
  • Держу пари, у вас нет большого двоичного файла в вашем объекте TImage, потому что содержимое PNG не было сохранено.

В итоге вам придется включить его как ресурс и динамически загружать во время выполнения.

person Francesca    schedule 12.05.2010

Я столкнулся с этой проблемой и с D2006. Решение, которое я использовал, похоже на решение Франсуа.

У меня есть компонент TPngImageCollection, в который я собираю все изображения во время разработки. Вам нужно будет найти модуль PngImageList в Интернете. Преимущество компонента TPngImageCollection в том, что вы можете иметь коллекцию изображений PNG разных размеров.

Во время выполнения при запуске я назначаю TImages для каждого из членов коллекции:

Image1.Picture.Assign (ImageCollection.Items [0].PNGImage) ;
Image2.Picture.Assign (ImageCollection.Items [1].PNGImage) ;
Image3.Picture.Assign (ImageCollection.Items [2].PNGImage) ;
etc

Бинго — вы можете создавать свои PNG-оригиналы с альфа-прозрачностью (я использую PhotoPlus 6.0 от Serif — бесплатный и очень функциональный) и показывать их в TImage.

person rossmcm    schedule 16.08.2010