procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
{ удаляем заголовок и рамку }
Params.Style := Params.Style or ws_popup xor ws_dlgframe;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
FormRgn: hRgn;
begin
{clear form}
Form1.Brush.Style := bsSolid; //bsclear;
{ делаем круг формы }
GetWindowRgn(Form1.Handle, FormRgn);
{ удаляем старый объект }
DeleteObject(FormRgn);
{ делаем прямоугольник формы }
Form1.Height := 500;
Form1.Width := Form1.Height;
{ создаём круглую форму }
FormRgn := CreateRoundRectRgn(1, 1, Form1.Width - 1,
Form1.height - 1, Form1.width, Form1.height);
{ устанавливаем новое круглое окно }
SetWindowRgn(Form1.Handle, FormRgn, TRUE);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.close;
end;
Что отличное вопрос!
Код, который вы предоставили, это приложение Delphi, создавшее круглую форму с custom-образом. Для создания круглой формы используется функция CreateRoundRectRgn, чтобы создать регион (а.к.a. "rgn"), а затем этот регион устанавливается как регион окна с помощью функции SetWindowRgn.
Вот разбивка, как это работает:
1. В обработчике события FormCreate формирование стиля кисти формы установлен на твердый (bsSolid) и высота и ширина формы устанавливаются в 500.
2. Старый регион (если есть) удаляется с помощью функции DeleteObject.
3. Новый круглый прямоугольник региона создается с помощью функции CreateRoundRectRgn. Эта функция принимает шесть параметров:
* x1, y1: верхний-левый угол рамки
* x2, y2: нижний-правый угол рамки
* width, height: ширина и высота рамки
4. Новый регион устанавливается как регион окна с помощью функции SetWindowRgn. Третий параметр (TRUE) указывает, что регион должен использоваться для обеих зон - клиентской области и области вне клиента.
Чтобы создать простую круглую форму без необходимости создания региона вручную, вы можете использовать компонент TShape из единицы ExtCtrls. Вот пример:
В этом примере компонент TShape создается и добавляется в форму. Форма устанавливается на круг (ssCircle) и ее размер устанавливается в 500x500 пикселей.
Обратите внимание, что вам нужно добавить кнопку TButton, чтобы закрыть форму по вашему запросу:
Надеюсь, это поможет! Пожалуйста, дайте мне знать, если у вас есть какие-либо дальнейшие вопросы. 😊
Создать круглую форму в Delphi можно с помощью класса TForm и использования функции CreateRoundRectRgn для создания региона, а затем вызова SetWindowRgn для установки нового круглого окна.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.