Главная Главная страница форума Регистрация Вход
Новые сообщения Участники форума Правила форума Поиск
Страница 1 из 11
Модератор форума: stalker, Ekz, Admin 
Форум » Все о Delphi » Программа и интерфейс » Скин (Как создать простейший скин)
Скин
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. Думаю вам этот способ еще рано. smile Но попробовать нужно все начиная с простого.


Не оказываю помощь через личные сообщения и 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, ну понятно. Удачи, друг! smile Если что, обращайся!

ПРОЙДИ ТЕСТ!!!!!
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
 
Форум » Все о Delphi » Программа и интерфейс » Скин (Как создать простейший скин)
Страница 1 из 11
Поиск:

Copyright DelphiDevelop.ru © 2008-2018
Хостинг от uCoz