//将控件设为四角星arc1, arc2分别为宽高直径
procedure Round4PieControl(Control: TWinControl; arc1, arc2: Integer);
varR: TRect;
Rgn,Rgn1,Rgn2,Rgn3,Rgn4: DWORD;
width2,height2: integer;
begin
//宽高一半
width2 := arc1 div 2;
height2 := arc2 div 2;
with Control do
begin
R :=Control.ClientRect;
rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, arc1, arc2);
//左上扇形
rgn1 := CreateRoundRectRgn(-width2, -height2, R.Right-width2, R.Bottom-height2, arc1, arc2);
//右上扇形
rgn2 := CreateRoundRectRgn(width2, -height2, R.Right +width2, R.Bottom-height2, arc1, arc2);
//左下扇形
rgn3 := CreateRoundRectRgn(-width2, +height2, R.Right -width2, R.Bottom+height2, arc1, arc2);
//右下扇形
rgn4 := CreateRoundRectRgn(width2, +height2, R.Right +width2, R.Bottom+height2, arc1, arc2);
CombineRgn(Rgn,Rgn,Rgn1,RGN_DIFF);
CombineRgn(Rgn,Rgn,Rgn2,RGN_DIFF);
CombineRgn(Rgn,Rgn,Rgn3,RGN_DIFF);
CombineRgn(Rgn,Rgn,Rgn4,RGN_DIFF);
Perform(EM_GETRECT, 0, lParam(@r));
InflateRect(r, -1, -1);
Perform(EM_SETRECTNP, 0, lParam(@r));
SetWindowRgn(Control.Handle, rgn, True);
Invalidate;
end;
end;