Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.02.2014, 18:01   #1
VMG
Пользователь
 
Аватар для VMG
 
Регистрация: 11.02.2014
Сообщений: 12
Восклицание Смена Image1 при наведение сохраняя изображения в программу при компиляции

Доброго времени суток !
Суть такова , использую Image в качестве кнопки , хотел реализовать визуальные эфекты при наведение и нажатие !
Поковыряв поиск и форум , труда не составило реализовать это всё
Использовал вот такой сценарий

Код:
procedure TForm1.Image1Click(Sender: TObject);
begin
 if Form1.CloseQuery then Form1.Close;
end;
 
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  Image1.Picture.LoadFromFile('A:\NewProject\bitmap\button_exit_mouse.png');
end;
 
procedure TForm1.Image1MouseLeave(Sender: TObject);
begin
  Image1.Picture.LoadFromFile('A:\NewProject\bitmap\button_exit_standart.png');
end;
По сути всё заработало отлично !
Но если запустить программу на другом компьютере то он ругается о том что нету картинки по данному адресу

Сделал по другому скрипт

Код:
Image1.Picture.LoadFromFile('button_exit_mouse.png');
Всё заработало нормально ! Если передавать программу с этими картинками и хранить их в той директории
Но меня это аж сипает
--------------------------------------------
Как сделать так что бы при компиляции они сохранялись в программу ? что бы не тащить программу с компонентами картинок , ибо их планируется более 50+ ...
Какой скрипт писать ? и как это в общем всё реализовать ?
Кому не тяжело , разжуйте !
--------------------------------------------
Подумал что можно к примеру сделать так:
Image1 -> button_exit_standart.png -> будет основным к примеру на положение 500x10
Image2 -> button_exit_mouse.png -> будет основным к примеру на положение 0x0 с разрешением тоже 0x0
То есть что бы Image2 не было видно вообще , но при этом существовал
и при функции Image1 -> MouseMove вставить скрипт за место

Код:
Image1.Picture.LoadFromFile('button_exit_mouse.png');
на

Код:
какой то скрипт , что бы загружал картинку с Image2 на Image1
ну и при функции Image1 -> MouseLeave вставить аналогичный скрипт только подгрузить Image1 обратно , ну или создать Image3 аналогичный к Image1 , так как может скрипт После загрузки Image2 подгрузить Image1 быть не рабочей так как в Image1 уже был испортирован Image2 ...

В общем суть такова : Как сделать что бы хранить картинки в EXE или подгружать с других ImageX в Image2 ?

Последний раз редактировалось VMG; 12.02.2014 в 21:28.
VMG вне форума Ответить с цитированием
Старый 12.02.2014, 18:05   #2
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

Ресурсы, или куча image, или imagelist
Кольша вне форума Ответить с цитированием
Старый 12.02.2014, 18:05   #3
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

Ставь PngComponents. В нём есть PngImageList. Грузи в него все изображения и используй. Либо если без компонентов, учись работать с ресурсами. В гугле такой информации полно. Главное лень победить.
Цитата:
Сообщение от VMG Посмотреть сообщение
какой то скрипт
Цитата:
Сообщение от VMG Посмотреть сообщение
так как может скрипт После загрузки
Какой на хрен скрипт? Термины изучи, а потом уж программируй.

Последний раз редактировалось doktor255; 12.02.2014 в 18:13.
doktor255 вне форума Ответить с цитированием
Старый 12.02.2014, 18:10   #4
VMG
Пользователь
 
Аватар для VMG
 
Регистрация: 11.02.2014
Сообщений: 12
Восклицание

Цитата:
Сообщение от Кольша Посмотреть сообщение
Ресурсы, или куча image, или imagelist
Благодарю за верное направление

В общем поковырявшись в сфере ImageList
Есть возможность реализовать что бы с ImageList подгружалась картинка в Image при эфенте Клика , Наведения , и прочего
Сценарий очень довольно простой оказывается
1) На форму закидываем простой TImageList из раздела Win32
2) В инспекторе задаём ему параметры разширения изображений которые там будут храниться
(!)-Максимальное разрешение картинок в ImageList составляет 256x256 пикселей
Форматы он поддерживает ( *.gif; *.jpg; *.jpeg; *.png; *.bmp; *.tif; *.tiff; *.ico; *.emf; *.wmf; )
Но ... прозрачность к примеру с png он не передаст !

Далее

Выбираем к примеру Image1
Передвигаемся в Инспекторе в раздел Events и Выбираем к примеру функцию OnMouseMove (Сделать при наведение мышки)
кликаем 2 раза в пустое окно справа функции и у нас Автоматически перекидывает в source
И Мы увидем созданный пустой код без сценария
Код:
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin

end;
далее , добавляем скрипт который с ImageList будет подгружать картинки в Image

Код:
  Form1.ImageList1.GetBitmap(0,Image1.Picture.Bitmap);
  Image1.Show;
Теперь разжуём что и к чему :
Код:
Form1.ImageList1.GetBitmap(0,Image1.Picture.Bitmap);
Image1.Show;
Код:
(!)- 0 - Это номер картинки присвоенный автоматически при загрузке (над каждой картинкой будет свой номер)
(!)- Image1 - Указываем куда она будет загружена
В общем у нас получается вот такой сценарий с скриптом :

Код:
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  Form1.ImageList1.GetBitmap(0,Image1.Picture.Bitmap);
  Image1.Show;
end;
-----------------------------------------------------
Но всё же :
У меня допустим картинки большего размера и по сути я так понимаю что возможно в моём случае только к примеру при наведение с Image2 подгружать в Image1 а при убирание мышки с Image3 подгружать в Image1
К примеру я хочу что бы Фон всей программы менялся при наведение на кнопку , а фон допустим 800x600
Кто подскажет какой скрипт что бы подгружать картинки не с ImageList а с Image2 к примеру ...

В общем суть такова : Как подгружать с других Image2 или Image3 в Image1 ?

Последний раз редактировалось VMG; 12.02.2014 в 21:29.
VMG вне форума Ответить с цитированием
Старый 12.02.2014, 18:14   #5
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

Цитата:
Сообщение от VMG Посмотреть сообщение
и всё учу методом тыка
Ну так и учи этим методом, а не методом "пусть меня учат"
Цитата:
Сообщение от VMG Посмотреть сообщение
В общем как и везде , все такие умные , а когда дело доходит до помощи , ума не хватает
Куда уж нам до таких тонкий материй.
P.S. А слабо хоть одну книжку прочитать по языку программирования, прежде чем на форумы лезть за помощью?

Последний раз редактировалось doktor255; 12.02.2014 в 18:17.
doktor255 вне форума Ответить с цитированием
Старый 12.02.2014, 18:19   #6
VMG
Пользователь
 
Аватар для VMG
 
Регистрация: 11.02.2014
Сообщений: 12
Восклицание

Цитата:
Сообщение от doktor255 Посмотреть сообщение
Ну так и учи этим методом, а не методом "пусть меня учат"
Смысл проекта и форума и разделом Общие вопросы если везде ответ иди Учи ...
Вы что серьёзно ? xD lol Улыбнули )))

Последний раз редактировалось VMG; 12.02.2014 в 21:33.
VMG вне форума Ответить с цитированием
Старый 12.02.2014, 18:47   #7
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

Цитата:
Сообщение от VMG Посмотреть сообщение
в гугле на теги : Delphi подгрузка изображения из ImageList , выдаёт полный бред а не решение проблемы !
Ибо вводишь бред. Поисковый запрос "Delphi ImageList Image" гарантировано даст нужные ссылки на первой странице. Правда по ним ты ничего не поймёшь, ибо не понимаешь в коде вообще ничего. Возвращаемся к началу. Придётся читать книжки, прежде чем начинать читать/писать код.
doktor255 вне форума Ответить с цитированием
Старый 12.02.2014, 20:49   #8
VMG
Пользователь
 
Аватар для VMG
 
Регистрация: 11.02.2014
Сообщений: 12
Восклицание

Цитата:
Сообщение от doktor255 Посмотреть сообщение
Ибо вводишь бред. Поисковый запрос "Delphi ImageList Image" гарантировано даст нужные ссылки на первой странице. Правда по ним ты ничего не поймёшь, ибо не понимаешь в коде вообще ничего. Возвращаемся к началу. Придётся читать книжки, прежде чем начинать читать/писать код.
Будте любезны , Не заходите и не пишите пожалуйста в этой теме , Вы мешаете очень !

Последний раз редактировалось VMG; 12.02.2014 в 21:35.
VMG вне форума Ответить с цитированием
Старый 12.02.2014, 21:16   #9
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

бррр... бредятину гоните...

По теме
Цитата:
Но ... прозрачность к примеру с png он не передаст !
он все передает, Delphi XE+ в настройках TImageList нужно выбрать 32-х битное качество и запихать туда PNG
Код:
Img.ColorDepth := cd32bit;
ZuBy вне форума Ответить с цитированием
Старый 12.02.2014, 21:39   #10
VMG
Пользователь
 
Аватар для VMG
 
Регистрация: 11.02.2014
Сообщений: 12
Восклицание

Цитата:
Сообщение от ZuBy Посмотреть сообщение
он все передает, Delphi XE+ в настройках TImageList нужно выбрать 32-х битное качество и запихать туда PNG
Код:
Img.ColorDepth := cd32bit;
Дело в том том что у меня Delphi XE 5 и там изначально уже 32bit
Но суть не в этом а в том что мои картинки больше 256x256
У меня картинки размером 320x50
и в общем он их тупо обрезает ...

Вот и ищу как подгрузить изображение с Image2 на Image1
ну и естественно Image2 выкинуть за приделы программы , к примеру на позицию 0x0 с размером 0x0 , ну или на -320 на -50
VMG вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать так чтобы при наведение мыши subbota HTML и CSS 3 03.03.2016 09:36
Классы. Чтение и создание .bmp изображения. Пропадает 1 пиксел при создании изображения. s-mumrik Visual C++ 3 12.04.2013 21:21
Смена цвета изображения при смене параметров faust-v JavaScript, Ajax 4 19.09.2011 11:46
При щелчке на ячейке DBGrid загружать изображение в Image1 из БД ulala Помощь студентам 9 09.10.2010 16:05
Смена изображения при наведении не на белую область Alex Cones Общие вопросы Delphi 6 10.05.2009 17:17