Скин |
Dan | Дата: Понедельник, 27.04.2009, 21:15 | Сообщение # 1 |
Ранг 1
Группа: Проверенные
Сообщений: 13
Награды: 0
Репутация: 0
Статус: Offline
| Прочитал статью "как создать скин" у вас на сайте. Но ничего не понял. Мне бы сделать какнибудь по проще. Я выложил Image на форму и загрузил в нее картинку, но как взять ее из файла не знаю. Нужно чтобы фоновая картинка и кнопки брались из файла. Как и чего делать? Я начинающий, только начал изучение Delphi.
Я не волшебник, я только учусь
|
|
| |
|
Admin | Дата: Вторник, 28.04.2009, 12:41 | Сообщение # 2 |
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
| У Picture есть метод: Code Image1.Picture.LoadFromFile('Путь к файлу'); Ну а названия файлов или папок устанавливается в программе.
Не оказываю помощь через личные сообщения и ICQ
|
|
| |
|
Dan | Дата: Вторник, 28.04.2009, 17:08 | Сообщение # 3 |
Ранг 1
Группа: Проверенные
Сообщений: 13
Награды: 0
Репутация: 0
Статус: Offline
| Ага, работает, спасибо. А вот я загрузил каринку, и при наведении на нее мышкой нужно чтобы она подсветилась. Это как сделать? [quote=Admin]Ну а названия файлов или папок устанавливается в программе.[/quote] Непонял. Это как?
Я не волшебник, я только учусь
|
|
| |
|
DJ_Евс | Дата: Вторник, 28.04.2009, 20:20 | Сообщение # 4 |
Ранг 6
Группа: Проверенные
Сообщений: 165
Награды: 3
Репутация: 1
Статус: Offline
| Quote (Dan) нужно чтобы она подсветилась. Это тебе придётся рисовать ещё 1 картинку - подсвеченую. А уж как её анализировать - много способов. Я бы сделал по таймеру, проверял бы координаты мыши и в зависимости от этого какую картинку рисовать. Подождём Админа, что он скажет =) Quote (Dan) Непонял. Это как? Скорее всего имеется в виду, что имена файлов нужно прописывать в коде. А вобще это вещь абсолютно свободная - можно, к примеру в каком-нибуль внешнем файле, с расширением типа *.cfg например, прописать имена файлов, а при запуске программы их считывать.
ПРОЙДИ ТЕСТ!!!!! http://FIDO20.ru/test.php?4052&c=bbea2a1
|
|
| |
|
Admin | Дата: Вторник, 28.04.2009, 23:01 | Сообщение # 5 |
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
| Quote (Dan) при наведении на нее мышкой нужно чтобы она подсветилась. Это как сделать? Можно добавить свой обработчик событий при наведении и при уведении мыши с компонента (в случае Delphi 7 и более ранних). Это OnMouseEnter и OnMouseLeave. В Delphi 2007 и 2009 уже эти события можно через инспектор объектов создать. ну а там уже смотреть и тем же самым LoadFromFile грузить нужное изображение. Но это тупо. Потомучто программа может быть запущена с чего угодно, и из сети и с флешки, и с дискетки даже. А скорости разные, и каждый раз загружать изображение не хорошо. Да и зачем его каждый раз грузить если можно 1 раз загрузить в ОЗУ и работать с ним уже в ОЗУ. Выход? Можно также тупо кинуть еще один Image. и свойством Visible показывать или скрывать нужную картинку. Либо помню сам в молодости так делал: кидал 3 Image. 1 был кнопкой, а другие скрыте, типа контейнера. И просто присваивал Image1.Picture:=Image2.Picture. Ну это типа загорелась. Самый лучший выход создать переменную, например TBitMap, и в нее уже загрузить BMPшку и ее закидывать в Image. Думаю вам этот способ еще рано. Но попробовать нужно все начиная с простого.
Не оказываю помощь через личные сообщения и ICQ
|
|
| |
|
Dan | Дата: Среда, 29.04.2009, 19:48 | Сообщение # 6 |
Ранг 1
Группа: Проверенные
Сообщений: 13
Награды: 0
Репутация: 0
Статус: Offline
| Admin, спасибо за подробное объяснение. Не, у меня Delphi 7. Я написал procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin Image1.Picture.LoadFromFile('move.bmp'); end; B при наведении картинка меняется на нужную, но обратно не получается. А вообще onMouseMove это когда я навожу мышкой же? DJ_Евс, ты говорил, что-то там про проверку координат мыши, можно поподробнее? Таймер я пробовал, понял как работает, вроде бы ничего сложного нету.
Я не волшебник, я только учусь
|
|
| |
|
DJ_Евс | Дата: Четверг, 30.04.2009, 12:38 | Сообщение # 7 |
Ранг 6
Группа: Проверенные
Сообщений: 165
Награды: 3
Репутация: 1
Статус: Offline
| Quote (Dan) А вообще onMouseMove это когда я навожу мышкой же? Это когда ты ведёшь мышкой по компоненту. Она при каждом "дрыжке" мыши её вызывает и обрабатывает. Поэтому, так как ты написал, будет работать, но когда ты проведёшь мышкой по кртинке, у тебя она будет грузиться с винта раз 200. А это очень плохо. Значит, так: Quote (Dan) можно поподробнее? Можно! =) Каждый раз считываешь значение Mouse.CursorPos.X; и ***.Y; Потом вычисляешь, находится эта точка над картинкой или нет, и в зависимости от этого говоришь проге какую из картинок рисовать. Зы: Admin правильно сказал про BitMap. Но проще сделать через две картинки с одинаковыми координатами и противоположными состояниями параметра Visible.
ПРОЙДИ ТЕСТ!!!!! http://FIDO20.ru/test.php?4052&c=bbea2a1
|
|
| |
|
Dan | Дата: Четверг, 30.04.2009, 21:05 | Сообщение # 8 |
Ранг 1
Группа: Проверенные
Сообщений: 13
Награды: 0
Репутация: 0
Статус: Offline
| Спасибо всем, разобрался. Правда пришлось помучиться с нахождением координат картинки, потом догадался координаты формы добавить и все заработало! Еще раз спасибо, хороший сайт, подробно так разъяснили. Сделал 2 Image и Visible изменял. Еще один маленький вопрос, можно ли сделать окно не квадратное, а например овальное или круглое, ну или треугольное. Мне сказали что делается это с помощью картинки, с фоном, например ярко зеленым. Но у меня не получается. Например, если я такую картинку загружу на Image и установлю Transparent = true, то фон исчезнет, но окно не становится прозрачным. Как сделать? Help!
Я не волшебник, я только учусь
|
|
| |
|
DJ_Евс | Дата: Четверг, 30.04.2009, 22:40 | Сообщение # 9 |
Ранг 6
Группа: Проверенные
Сообщений: 165
Награды: 3
Репутация: 1
Статус: Offline
| Dan, по-моему, нужно транспарент делать не только на имаге, но и на самой форме. Если получится, скрин в студию! ;-)
ПРОЙДИ ТЕСТ!!!!! http://FIDO20.ru/test.php?4052&c=bbea2a1
|
|
| |
|
Dan | Дата: Пятница, 01.05.2009, 21:36 | Сообщение # 10 |
Ранг 1
Группа: Проверенные
Сообщений: 13
Награды: 0
Репутация: 0
Статус: Offline
| Спасибо! Я чего-то не замечал свойства TransparentColor у формы. Скринить пока еще нечего, Я просто разбираюсь и изучаю Delphi.
Я не волшебник, я только учусь
|
|
| |
|
DJ_Евс | Дата: Пятница, 01.05.2009, 22:33 | Сообщение # 11 |
Ранг 6
Группа: Проверенные
Сообщений: 165
Награды: 3
Репутация: 1
Статус: Offline
| Dan, ну понятно. Удачи, друг! Если что, обращайся!
ПРОЙДИ ТЕСТ!!!!! http://FIDO20.ru/test.php?4052&c=bbea2a1
|
|
| |
|
ZuBy | Дата: Суббота, 02.05.2009, 16:21 | Сообщение # 12 |
Ранг 5
Группа: Проверенные
Сообщений: 118
Награды: 2
Репутация: 2
Статус: Offline
| а почему не использовать Canvas, конечно это не для новичков, потому как там нужно много писать ручками и вообще без Видимых объектов... на днях скину Admin'у исходник ( надеюсь админ добавит ) с работой в Canvas (это новая версия ZuBy Плеера версия 3, думаю такое еще никто не делал, он полностью будет разработан при помощи Canvas)... сложность оцените при просмотре кода... ZuBy Плеер - оригинальность и функциональность (www.zuby.ucoz.kz)
http://www.zubymplayer.com
|
|
| |
|