我这样写,但生成出来那个角是尖的,怎样画一个圆角的??
就像RealOne(RealPlayer)一样。procedure THoleForm.BitBtn2Click(Sender: TObject);
var
  rgn: HRGN;
  p: array[0..7] of TPoint;
begin  //将坐标保存于数组p中
  p[0].x := 5;
  p[0].y := 0;  p[1].x := width-5;
  p[1].y := 0;  p[2].x := width;
  p[2].y := 5;  p[3].x := width;
  p[3].y := height-5;  p[4].x := width-5;
  p[4].y := height;  p[5].x := 5;
  p[5].y := height;  p[6].x := 0;
  p[6].y := height-5;  p[7].x := 0;
  p[7].y := 5;  //根据数组p创建一个多边形
  rgn := CreatePolygonRgn( p,8,WINDING);
  //根据多边形设置窗口形状
  SetWindowRgn(Handle, rgn, True );end;

解决方案 »

  1.   

    在Windows API函数里有一个SetWindowRgn函数,这是那些很难有人注意到的对编程者来说是个巨大的宝藏的隐含的API函数中的一个。本函数允许你改变窗口的区域,这意味着您可以创建圆的、椭圆的、圆角矩形等风格各异的窗口。    它的使用形式为 SetWindowRgn(HWND hWnd,HRGN hRgn,BOOL bRedraw);     第一个参数HWND 是将设置其区域的窗口的句柄;第二个参数是将设置的区域的句柄,一旦设置了该区域,就不能使用或修改该区域句柄,也不要删除它;第三个参数是一个布尔量,若为TRUE则立即重绘窗口,若为False则不会立即重绘。实例几个:var hr :thandle;一、得到圆形窗体    hr:=CreateEllipticRgn(0,0,Width,Height);    SetWindowRgn(handle,hr,true); 二、得到圆角矩形窗体    width:=width+100;    hr:=createroundrectrgn(0,0,width,height,200,200);    setwindowrgn(handle,hr,true);    三、浮雕窗体    canvas.Font.Name := 'Times New Roman';    canvas.Font.size := 72;    canvas.Font.style := [fsItalic,fsBold];    beginpath(canvas.handle);    canvas.Polygon([Point(0,0),Point(Width,0),                  Point(Width,Height),Point(0,Height),                  Point(0,0)]);     canvas.TextOut(20,40,'WJIACHUN');    endpath(canvas.handle);    SetWindowRgn( Handle, PathToRegion(canvas.Handle), true );
     
      

  2.   

    搞定。谢谢。hr:=createroundrectrgn(0,0,width,height,200,200);
    找不到这个函数。