powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Непрямоугольные формы. Регионы
10 сообщений из 10, страница 1 из 1
Непрямоугольные формы. Регионы
    #33477289
SCORPION Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как создавать нестандартные формы НЕпрямоугольные? Ну например
с закругленными краями? Помнится есть способ типа:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
void __fastcall TForm1::FormCreate(TObject *Sender)
{

 HRGN Region1; 
 HRGN Region2;

// Создаем регионы
 Region1 = CreateEllipticRgn(nLeftRect,nTopRect,nRightRect,nBottomRect);
 Region2 = CreateRectRgn(nLeftRect,nTopRect,nRightRect,nBottomRect);


// Далее объеденяем регионы

 CombineRgn(Region1,Region1,Region2,RGN_OR );

// Устанавливаем регион окну
 SetWindowRgn(Handle,Region1,TRUE);

//Удаляем временные регионы
 DeleteObject(Region1);
 DeleteObject(Region2);
}

Слышал естьещё способ:
Один файл - это "фоновая картинка", желательно с прозрачными областями там, где ничего не должно быть.
Второй файл - это "маска", она представляет собой черно-белую картинку, где черным закрашено то, где должен быть фон, а белые области показывают места, где ничего не должно быть.
Потом их накладывать ...

Есть у кого-нибудь нормальные способы реализации таких форм?
...
Рейтинг: 0 / 0
Непрямоугольные формы. Регионы
    #33477652
SnowMan2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
void __fastcall TForm1::FormCreate(TObject *Sender)
{
 HRGN Region1;
 Region1 = CreateEllipticRgn( 0 , 0 ,Width,Height);
 SetWindowRgn(Handle,Region1,TRUE);
}
Установить:
BorderIcons - все false
BorderStyle - bsNone
Caption - стереть

Самому все нарисовать: заголовок, бордюр, кнопочки и конечно содержимое.
Обработать мышь и клавиатуру: перемещение, изменение размера, закрытие, менимизация, максимизация.
Не забыть поля ввода в дугу загнуть.
Получится очень оригинально.
...
Рейтинг: 0 / 0
Непрямоугольные формы. Регионы
    #33478417
SCORPION Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SnowMan2
Код: plaintext
1.
2.
3.
4.
5.
void __fastcall TForm1::FormCreate(TObject *Sender)
{
 HRGN Region1;
 Region1 = CreateEllipticRgn( 0 , 0 ,Width,Height);
 SetWindowRgn(Handle,Region1,TRUE);
}
Установить:
BorderIcons - все false
BorderStyle - bsNone
Caption - стереть

Самому все нарисовать: заголовок, бордюр, кнопочки и конечно содержимое.
Обработать мышь и клавиатуру: перемещение, изменение размера, закрытие, менимизация, максимизация.
Не забыть поля ввода в дугу загнуть.
Получится очень оригинально.

Ты загнул на счет CreateEllipticRgn(0,0,Width,Height); Я хочу форму не ввиде
сплюснутого элюминатора, а похожую на мыло (т.е. с слегка закругленными краями), ну на дискету в конце концов похожую.
"Самому все нарисовать" ну может сам и справлюсь с этим ...
"Не забыть поля ввода в дугу загнуть" - а это еще как делать?
...
Рейтинг: 0 / 0
Непрямоугольные формы. Регионы
    #33478925
SnowMan2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SCORPION Zпохожую на мыло (т.е. с слегка закругленными краями), ну на дискету в конце концов похожую.

Собственно какую хочешь, такую и комбинируй, только ты назначил окну Region1 и тутже его удалил, что не есть хорошо.

SCORPION Z"Не забыть поля ввода в дугу загнуть" - а это еще как делать?

Конечно этого можно и не делать, но согласись, что под криволинейным бордюром должен быть соответствуюший заголовок, а ниже соответствующие тексты, поля ввода и т.д. Например на компакт дисках так написано.
Насчет как это сделать: видимо каждую букву отдельно прописывать под соответствующим углом. См. функции CreateFont и TextOut.
...
Рейтинг: 0 / 0
Непрямоугольные формы. Регионы
    #33479509
SCORPION Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да собсвенно я хочу попробовать с простого. Т.е. обычная форма
у которой 4 угла закруглены. Вот и все.
...
Рейтинг: 0 / 0
Непрямоугольные формы. Регионы
    #33479518
SCORPION Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Просто как лепить регионы для такого случая?
1- прямоугольник
2-5 - кружки по краям прямоугольника

Или не так?
...
Рейтинг: 0 / 0
Непрямоугольные формы. Регионы
    #33479619
Фотография Сергей Ильич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SCORPION ZПросто как лепить регионы для такого случая?
1- прямоугольник
2-5 - кружки по краям прямоугольника

Или не так?

RTFM BeginPath(), EndPath(), PathToRegion()
...
Рейтинг: 0 / 0
Непрямоугольные формы. Регионы
    #33479694
SCORPION Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot Сергей Ильич
RTFM BeginPath(), EndPath(), PathToRegion()[/quot]

Я делал
Код: plaintext
Region1 = CreateRoundRectRgn( 0 , 0 ,Width,Height,Width/ 10 ,Height/ 10 );
Получилось в принципе то что хотел, но по краям формы окантовка срезанная и выглядить теперь она как-то не законченно.
...
Рейтинг: 0 / 0
Непрямоугольные формы. Регионы
    #33479745
Фотография Сергей Ильич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чего-то сейчас мне влом, но тема хорошо раскрыта на

http://www.codeproject.com/gdi/flowerpower.asp
...
Рейтинг: 0 / 0
Непрямоугольные формы. Регионы
    #33480696
SCORPION Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Оригинальный примерчик. Можно где-то на сайте оранжиреи использовать.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Непрямоугольные формы. Регионы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]