{
Die CreateRoundRectRgn lasst eine Form mit abgerundeten Ecken erscheinen.
The CreateRoundRectRgn function creates a rectangular
region with rounded corners
}
procedure TForm1.FormCreate(Sender: TObject);
var
rgn: HRGN;
begin
Form1.Borderstyle := bsNone;
rgn := CreateRoundRectRgn(0,// x-coordinate of the region's upper-left corner
0, // y-coordinate of the region's upper-left corner
ClientWidth, // x-coordinate of the region's lower-right corner
ClientHeight, // y-coordinate of the region's lower-right corner
40, // height of ellipse for rounded corners
40); // width of ellipse for rounded corners
SetWindowRgn(Handle, rgn, True);
end
{ The CreatePolygonRgn function creates a polygonal region. }
procedure TForm1.FormCreate(Sender: TObject);
const
C = 20;
var
Points: array [0..7] of TPoint;
h, w: Integer;
begin
h := Form1.Height;
w := Form1.Width;
Points[0].X := C; Points[0].Y := 0;
Points[1].X := 0; Points[1].Y := C;
Points[2].X := 0; Points[2].Y := h - c;
Points[3].X := C; Points[3].Y := h;
Points[4].X := w - c; Points[4].Y := h;
Points[5].X := w; Points[5].Y := h - c;
Это фрагмент кода на языке Delphi, демонстрирующий создание форм с закругленными углами двумя разными методами:
Используя функцию CreateRoundRectRgn, которая создает прямоугольную область с закругленными углами.
Используя функцию CreatePolygonRgn, которая создает полигональную область.
Вот подробное описание кода:
Метод 1: Использование CreateRoundRectRgn
В этом примере форма создается с стилем границы bsNone, что significa, что вокруг формы не будет рисоваться граница. Затем функция CreateRoundRectRgn вызывается для создания прямоугольной области с закругленными углами.
Функция принимает шесть параметров:
* Координата x верхнего левого угла области
* Координата y верхнего левого угла области
* Координата x нижнего правого угла области
* Координата y нижнего правого угла области
* Высота эллипса для закругленных углов
* Ширина эллипса для закругленных углов
В этом случае параметры устанавливаются для создания формы размером равным ее клиентской зоне (т.е., области внутри границы), а радиус закругленных углов составляет 40 пикселей.
Полученная область затем присваивается форме с помощью SetWindowRgn.
Метод 2: Использование CreatePolygonRgn
В этом примере массив структур TPoint определяется для представления точек, которые составляют полигональную область. Точки рассчитываются на основе размера формы и константы C, которая представляет радиус закругленных углов.
Функция CreatePolygonRgn затем вызывается с параметрами:
* Массив точек
* Количество точек (в этом случае 8)
* Флаг, указывающий, использовать ли правило обхода или необхода для заливки области
В этом случае флаг установлен в WINDING, что significa, что область будет заливаться с помощью правила обхода.
Полученная область затем присваивается форме с помощью SetWindowRgn.
Обратите внимание, что в обоих примерах обработчик события FormCreate используется для создания закругленных углов. Это событие вызывается при создании или изменении размера формы.
В целом, эти кодовые фрагменты демонстрируют, как создавать формы с закругленными углами с помощью встроенных функций Delphi для создания областей.
Создание форм с закругленными краями в Delphi через функцию CreateRoundRectRgn или CreatePolygonRgn.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.