Форум » GUI » Image » Ответить

Image

Vlad04: Непонятки с отображением Картинки на форме. Есть одна и та же форма ( About) , которая кочует из программы в программу. На форме выводится Картинка в формате jpg. В одной программе картинка отображается на форме , в другой нет- пустое место. Все строится в Ide. Хотел пример приложить, но в примере, как назло, что ни делал, картинка ОТОБРАЖАЕТСЯ!

Ответов - 15

Andrey: Vlad04 пишет: В одной программе картинка отображается на форме , в другой нет- пустое место. Значит при построение в другой программе картинка не попадает в ресурсы программы. Посмотри внимательно имена картинки и наличие самой картинки в другой программе.

Vlad04: Смотрю в редакторе файл Main.Res - картинка там, т.е. попала. Почему не отображается - не ясно!

Vlad04: Перевел jpg в bmp - появилась !


Dima: Vlad04 пишет: Перевел jpg в bmp - появилась ! Странно...

ММК: Dima пишет: Странно... Скорее всего какая-то простенькая ошибка. Например в FW при работе с jpg надо под "рукой" иметь freeimage.dll, хотя явно она не вызывается :).

Dima: ММК пишет: Скорее всего какая-то простенькая ошибка. Тоже так подумал.

Andrey: Мы это уже обсуждали, но возвращаюсь ещё раз к этому вопросу. Сделал пример с картинкой. Сам пример - https://cloud.mail.ru/public/Bjh8/BA5cJhGyP Картинка круглая (png). При выводе на форму, круг становиться загрызанным. А можно ли как то избавиться от картинок загрызенных неизвестно кем ? Если картинка квадратная, то всё хорошо. Я делал раньше для круглых картинок цвет фона формы и убирал BACKGROUNDCOLOR aBackColor STRETCH TRANSPARENT. Но это же не дело... Можно ли как то на "лету" или в скрытом режиме - поменять фон у картинки, а потом выводить на форму ? Или функцию работы с PNG прикрутить для вывода на форму с заданием цвета вывода ?

Vlad04: круг становиться загрызанным Я думал так задумано, картинка такая. Смотрится нормально

Andrey: Vlad04 пишет: Я думал так задумано, картинка такая. Смотрится нормально Посмотри в этом проекте картинки в папке RES. И увидишь разницу с ресурсами и на форме !

gfilatov2002: Andrey пишет: убирал BACKGROUNDCOLOR aBackColor STRETCH TRANSPARENT Причина искажения картинки заключается в использовании класса STRETCH Но без этого класса не будет работать присвоение новой картинки после выбора из меню Решил эту проблему таким образом. Определил элемент Image_1 без класса STRETCH [pre2] @ 40, 20 IMAGE Image_1 PICTURE aImg[nI] WIDTH 64 HEIGHT 64 ; BACKGROUNDCOLOR aBackColor /*STRETCH*/ TRANSPARENT ; OnMouseHover RC_CURSOR( "MINIGUI_FINGER" ) ; ACTION {|| MyShowCntMenu( @nI, aMenu, aIcon ) ,; SetImagePicture( aImg, nI, aMenu, aIcon, aBackColor ) } [/pre2]и изменяю картинку в новой функции [pre2]STATIC FUNCTION SetImagePicture( aImg, nI, aMenu, aIcon, aBackColor ) IF nI <= Len(aImg) Form_1.Image_1.Release @ 40, 20 IMAGE Image_1 OF Form_1 PICTURE aImg[nI] ; WIDTH 64 HEIGHT 64 ; BACKGROUNDCOLOR aBackColor TRANSPARENT ; OnMouseHover RC_CURSOR( "MINIGUI_FINGER" ) ; ACTION {|| MyShowCntMenu( @nI, aMenu, aIcon ) ,; SetImagePicture( aImg, nI, aMenu, aIcon, aBackColor ) } ENDIF RETURN Nil [/pre2] Теперь картинка отображается без искажений

Andrey: gfilatov2002 пишет: Теперь картинка отображается без искажений Идея понятна ! Спасибо ! Теперь нужно переделать, чтобы в STATIC FUNCTION SetImagePicture() не было ничего лишнего. Т.е. внести автоопределение координат и т.д.

Andrey: gfilatov2002 пишет: Причина искажения картинки заключается в использовании класса STRETCH А без него PNG картинка на сером фоне даёт белый фон. И получается не круг, а квадрат. Вот я и задавал вопрос, можно ли сделать функцию для смены фона у PNG картинки в заданный цвет ? Т.е. определить aBackColor := Form_1.BackColor и передать его в эту функцию, а потом выводить на форму. Или сделать как то по другому. Может можно переписать эту одну функцию для класса STRETCH и не будет обгрызенные картинки ?

gfilatov2002: Andrey пишет: сделать как то по другому Вот именно Пересохранил эти PNG картинки с опцией "Сохранять прозрачность как альфа-канал" и теперь картинки отображаются без искажений

Andrey: gfilatov2002 пишет: Пересохранил эти PNG картинки с опцией "Сохранять прозрачность как альфа-канал" А ларчик просто открывался... Картинки брал с https://www.iconfinder.com Думал что там нормально созданы. Оказывается нужно проверять. А чем пере сохранял картинки ?

gfilatov2002: Andrey пишет: чем пере сохранял картинки ? IrfanView 4.50



полная версия страницы