|
Создает прямоугольный регион с закругленными углами, ограниченный прямоугольником с указанными координатами.
Синтаксис
function CreateRoundRectRgn(
| x1, | y1, | x2, | y2, | eWidth, | eHeight
| ): Number;
|
Параметры
|
Параметр
| Тип
| Описание
|
x1
| Number
| x-координата левого верхнего угла прямоугольника
|
y1
| Number
| y-координата левого верхнего угла прямоугольника
|
x2
| Number
| x-координата правого нижнего угла прямоугольника
|
y2
| Number
| y-координата правого нижнего угла прямоугольника
|
eWidth
| Number
| ширина эллипса, используемого при закруглении углов
|
eHeight
| Number
| высота эллипса, используемого при закруглении углов
|
|
Возвращаемое значение
Дескриптор созданного региона или 0 (в случае ошибки).
// Окно с закругленными углами и внутренними вырезами // сложной формы, перемещаемое мышью
var clr=0x0070A0.toTColor();
// Форма без заголовка frm=new TForm(); frm.BorderStyle=bsNone; frm.Width =w1=GetSystemMetrics(SM_CXSCREEN)/2; frm.Height=h1=GetSystemMetrics(SM_CYSCREEN)/2; frm.Color=clr;
// Регион Прямоугольник с закругленными углами // по размеру формы rgn1=CreateRoundRectRgn(0,0,w1,h1,40,40);
// Регион Эллипс w2=w1-20; h2=h1-20; rgn2=CreateEllipticRgn(20,20,w2,h2);
// Регион Звезда h2=h2-20; x=x1=(w1-h2)/2; y=y1=(h1-h2)/2+15; pnt_lst=new Array(); for (i=0,n=5,h=h2/2,f=Math.PI*4/n;i<n;i++) pnt_lst[i]=new TPoint(x+h*(1+Math.sin(f*i)),y+h*(1-Math.cos(f*i))); rgn3=CreatePolygonRgn(pnt_lst,n,WINDING);
// Форма в виде прямоугольника с закругленными углами // с эллипсом и звездой CombineRgn(rgn1,rgn1,rgn2,RGN_DIFF); CombineRgn(rgn1,rgn1,rgn3,RGN_OR); SetWindowRgn(frm.Handle,rgn1,true);
DeleteObject(rgn2); DeleteObject(rgn3);
// Панель в виде звезды str=new TPanel(frm); str.Caption="Нажми меня!"; str.Font.color=clWhite; str.Width=str.Height=h2; str.Left=x1; str.Top =y1; str.Color=frm.Color; str.Cursor=crHandPoint; str.OnMouseDown=str_MouseDown; for (i=0;i<n;i++) { pnt_lst[i].x-=x; pnt_lst[i].y-=y; } rgn=CreatePolygonRgn(pnt_lst,n,WINDING); SetWindowRgn(str.Handle,rgn,true);
// Кнопка btn=new TButton(frm); btn.Caption="Закрыть"; btn.Left=frm.ClientWidth -btn.Width -20; btn.Top =frm.ClientHeight-btn.Height-20; btn.Hint="Закрыть окно"; btn.ShowHint=true; btn.OnClick=btn_Click;
frm.ShowModal();
// Получить цвет ярче/темнее function getShiftColor(clr,shift) { var c;
return RGB( ((c=getRValue(clr)+shift)>255) ? 255 : (c<0) ? 0 : c, ((c=getGValue(clr)+shift)>255) ? 255 : (c<0) ? 0 : c, ((c=getBValue(clr)+shift)>255) ? 255 : (c<0) ? 0 : c); }
// Обработчик события OnClick кнопки "Закрыть" function btn_Click(btn) { frm.Close(); }
// Обработчик события OnMouseDown панели str function str_MouseDown(str,Button,Shift,X,Y) { var clr=str.Color,crs=str.Cursor,cpt=str.Caption;
if (Button!=mbLeft) return;
ReleaseCapture(); str.Color=getShiftColor(clr,48); str.Cursor=crDrag; str.Caption="Двигай меня!";
// Войти в процесс перемещения формы мышью frm.Perform(WM_SYSCOMMAND,0xF009,0);
str.Caption=cpt; str.Cursor=crs; str.Color=clr; }
|
Совместимость
Windows API
|
JS+ | Руководство пользователя
|
|
|