procedure TForm1.FormCreate(Sender: TObject);
var
  vRGN: HRGN;
begin
  vRGN := CreateEllipticRgn(0, 0, Width, Height);
  SetWindowRgn(Handle, vRGN, True);
  DeleteObject(vRGN);
end;

解决方案 »

  1.   

    把 RGN(区域)数据 和 相关图片 做到资源中
    一个个的播放就可以了嘻嘻嘻个人观点仅供参考嘻嘻嘻嘻
      

  2.   

    把 RGN(区域)数据 和 相关图片 做到资源中
    一个个的播放就可以了嘻嘻嘻个人观点仅供参考嘻嘻嘻嘻
      

  3.   

    vRGN := CreateEllipticRgn(0, 0, Width, Height); //创建一个区域
      SetWindowRgn(Handle, vRGN, True); //设置窗体的区域
      DeleteObject(vRGN); //释放资源(* from help
    Following are the functions used with regions. CombineRgn
    CreateEllipticRgn
    CreateEllipticRgnIndirect
    CreatePolygonRgn
    CreatePolyPolygonRgn
    CreateRectRgn
    CreateRectRgnIndirect
    CreateRoundRectRgn
    EqualRgn
    ExtCreateRegion
    FillRgn
    FrameRgn
    GetPolyFillMode
    GetRegionData
    GetRgnBox
    InvertRgn
    OffsetRgn
    PaintRgn
    PtInRegion
    RectInRegion
    SetPolyFillMode 
    *)参考研究这些函数,你可以画出任意形状的窗体
      

  4.   

    我是一个delphi初学者,听的一头雾水,能给原代码吗?
    有劳了
      

  5.   

    procedure TForm1.FormCreate(Sender: TObject);
    var
      vRGN: HRGN;
    begin
      BeginPath(Canvas.Handle);
      SetBkMode(Canvas.Handle, TRANSPARENT);
      Canvas.Font.Name := '宋体';
      Canvas.Font.Size := 100;
      Canvas.TextOut(20, 20, '星 ☆ 星');
      EndPath(Canvas.Handle);
      vRGN := PathToRegion(Canvas.Handle);
      SetWindowRgn(Handle, vRGN, True);
      DeleteObject(vRGN);
    end;procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      if Button = mbRight then Exit;
      ReleaseCapture;
      Perform(WM_SYSCOMMAND, SC_MOVE + 1, 0);
    end;
      

  6.   

    利用win32 API函数setwindowrgn就可以将窗口定义为任何形状,以下是将窗口定义为园角矩形的例子:
    procedure TPortForm.FormCreate(Sender: Tobject);
    var hr :thandle;
    begin
    hr:=createroundrectrgn(0,0,width,height,20,20);//定义园角矩形(win API函数)
    setwindowrgn(handle,hr,true); //设置园角窗口
    end;
    为了使该窗口更好,应在onResize事件处理程序放相同的代码。
    /////////////////////////////////////
    用汉字做窗体形状
    procedure TForm1.FormCreate(Sender: TObject);
    var
    rgn:HRGN;
    begin
     BeginPath(Canvas.Handle);
     SetBkMode( Canvas.Handle, TRANSPARENT );
     Canvas.Font.Name:= '宋体';
     Canvas.Font.Size:=100;
     Canvas.TextOut( 20, 20, '漂亮吗?');//用"漂亮吗?"作为form的形状
     EndPath(Canvas.Handle);
     rgn:= PathToRegion(Canvas.Handle);
     SetWindowRgn( Handle, rgn, true );
    end;
      

  7.   

    调用 ActiveForm 控件,窗体不但是不规则的,而且菜单,按钮都有动态效果的哦~~~
    只可惜是 ActiveX 版的。
    :(
      

  8.   

    procedure TForm1.FormPaint(Sender: TObject);
    var
     t:string;
     rgn:HRGN;
    begin
       BeginPath(Canvas.Handle); SetBkMode( Canvas.Handle, TRANSPARENT );// Canvas.Font.Name:= fontname;
     canvas.Font.Name:=fonttest.Name;
     Canvas.Font.Size:=fontsize;
     canvas.Font.Style:=fontstyle;
     t:=timetostr(now());
     Canvas.TextOut( 0, 20, t); //?"????"??form??? EndPath(Canvas.Handle); rgn:= PathToRegion(Canvas.Handle); SetWindowRgn( Handle, rgn, true );
    end;