![]() |
|
Модераторы: Poseidon |
![]()
|
|
| NOT |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 18.6.2005 Где: UA::CK Репутация: нет Всего: нет |
Здравствуйте. Надо очень узнать как делается нестандартная форма кнопки, курсовик горит. Приведите пример или дайте ссылку. Инфа, желательно должна быть понятной идиоту, т.к. за Delphi три дня только сижу. В нете инфы не нашел.
|
|||
|
||||
| Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 4 Всего: 111 |
В яндексе полно статей на эту тему. Достаточно включить поиск по функции SetWindowRgn и будет тебе счастье.
Добавлено @ 14:15 Ещё по теме http://forum.vingrad.ru/index.php?act=modu...faq§ion=679 Это сообщение отредактировал(а) Yanis - 18.6.2005, 14:12 |
|||
|
||||
| WolfON |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 604 Регистрация: 19.7.2004 Репутация: нет Всего: 8 |
Yanis
SetWindowRgn будет тормозить, если много кнопок разной формы. Лучше сделай Image'ем. |
|||
|
||||
| Yanis |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 4 Всего: 111 |
Как можно писать курсовик по/на Delphi, просидев в/за нём/ним всего лишь 3 дня? Добавлено @ 16:41 To WolfON Просто в вопросе написано
|
||||
|
|||||
| Payne |
|
|||
![]() Детектив ![]() Профиль Группа: Участник Сообщений: 247 Регистрация: 6.4.2005 Где: Петербург Репутация: 2 Всего: 10 |
NOT, вот тебе пример.
Помести в любое место формы кнопку TButton. Теперь в разделе var после Form1: TForm; напиши следующую строку: region: HRGN; Этим ты объявишь переменную типа HRGN, то есть, по сути, регион. Щелкни в любом свободном месте формы, перейди на вкладку Events инспектора объектов и дважды щелкни по методам OnCreate и OnDestroy. Заполни их следующими операторами:
Поясняю. В процедуре 1 ты создаешь регион. Переменной region типа HRGN присваиваешь значение CreateRoundRectRgn..., то есть прямоугольник с закругленными углами. Формат такой: CreateRoundRectRgn (x1, y1, x2, y2, p1, p2); где (x1,y1) - координаты верхнего левого угла, (x2,y2) - координаты нижнего правого угла, (p1,p2) - длина и высота закругления. Существуют и другие функции создания регионов: function CreateEllipticRgn (p1, p2, p3, p4: Integer): HRGN; Создаёт эллиптический регион по четырём координатам function CreateEllipticRgnIndirect (const p1: TRect): HRGN; Создаёт эллиптический регион, впсанный в заданный прямоугольник p1 function CreateRectRgn (p1, p2, p3, p4: Integer): HRGN; Создаёт прямоугольный регион по четырём координатам function CreateRectRgnIndirect (const p1: TRect): HRGN; Создаёт прямоугольный регион по заданному прямоугольнику p1 function CreateRoundRectRgn (p1, p2, p3, p4, p5, p6: Integer): HRGN; Создаёт прямоугольный регион по координатам p1-p4 с эллиптически закруглёнными краями с высотой эллипса скругления p5 и шириной p6 Это, безусловно, не все, но тебе будет, думаю, достаточно. Далее, SetWindowRgn отображает регион. Параметры: окно - элемент класса HWND (в нашем случае Button1.Handle), регион - переменная класса HRGN и флаг, указывающий, будет ли перерисовываться окно. В процедуре 2 лишь удаляется созданный регион. Вот и все. Для того, чтобы эффект был более заметным, поменяй цвет формы. Можно также работать с цветами регионов, но я сам не помню, как. Кроме того, с помощью регионов можно менять форму любого объекта, то есть и самой формы и других компонентов. За это и отвечает параметр функции SetWindowRgn типа HWND. К примеру, вместо Button1.Handle напиши Form1.Handle и посмотри, какой будет результат. |
|||
|
||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |