rt

解决方案 »

  1.   

    procedure TForm1.FormCreate(Sender: TObject);varrgn:HRGN;beginBeginPath(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;着是文字镂空的,我想做图形镂空。
      

  2.   

    procedure TForm1.FormCreate(Sender: TObject);varrgn:HRGN;beginBeginPath(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;着是文字镂空的,我想做图形镂空。
      

  3.   

    是不是这种?procedure TForm1.FormCreate(Sender: TObject); 
    var 
      FullRgn, ClientRgn, ButtonRgn: THandle; 
      Margin, X, Y: Integer; 
    begin 
      Margin := (Width - ClientWidth) div 2; 
      FullRgn := CreateRectRgn(0, 0, Width, Height); 
      X := Margin; 
      Y := Height - ClientHeight - Margin; 
      ClientRgn := CreateRectRgn(X, Y, X + ClientWidth, Y + ClientHeight); 
      CombineRgn(FullRgn, FullRgn, ClientRgn, RGN_DIFF); 
      X := X + Button1.Left; 
      Y := Y + Button1.Top; 
      ButtonRgn := CreateRectRgn(X, Y, X + Button1.Width, Y + Button1.Height); 
      CombineRgn(FullRgn, FullRgn, ButtonRgn, RGN_OR); 
      SetWindowRgn(Handle, FullRgn, True); 
    end;
    就是在窗体里抠几个几何形状的洞?用上面的方法,你多做几个区域,然后与或非就行了具体的看看API的帮助就行了我在上学的时候曾经用它做出过很好玩的窗体形状
      

  4.   

    不要用阿德的方法,笨!Irians的方法最好,使用BeginPath和EndPath就可以了!
      

  5.   

    Sorry,没有看清楚,Irians是楼主啊!呵呵,文字镂空和图形镂空有什么区别吗?