2:我认为是有不规则边界的窗体
1:我认为是半透明窗体

解决方案 »

  1.   

    是一个不规则窗体
    我查来一段程序
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      ExtCtrls, StdCtrls, Menus;type
      TForm1 = class(TForm)
        Image1: TImage;
        PopupMenu1: TPopupMenu;
        N1: TMenuItem;
        procedure FormCreate(Sender: TObject);
        procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
          Y: Integer);
        procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure N1Click(Sender: TObject);
      private
        { Private declarations }
      public
        procedure shape(a:timage);
        { Public declarations }
      end;var
      Form1: TForm1;
      xx,yy:integer;
      b:boolean;
    implementation{$R *.DFM}procedure tform1.shape(a:timage);
    var r2:hrgn;r1:hrgn;
        x,y,s,e:integer;
    begin
      r1:=createrectrgn(0,0,0,0);
      for y:=1 to a.Height  do
      begin
        x:=0;
        s:=0;
        e:=0;
        repeat
          x:=x+1;
          while (a.canvas.pixels[x,y]=clwhite)and(x<a.width)do
          begin
            x:=x+1;
            s:=x;
          end;
          while (a.canvas.pixels[x,y]<>clwhite)and(x<a.width)do
          begin
            x:=x+1;
            e:=x;
          end;
          if s<=e then
          begin
            r2:=createrectrgn(s,y,e,y+1);
            combinergn(r1,r1,r2,rgn_or);
            deleteobject(r2);
          end;
        until x>=a.width
      end;
      setwindowrgn(form1.handle,r1,true);
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      form1.shape(image1);
    end;procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      b:=true;
      xx:=x;
      yy:=y;
    end;procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
      if b then
      begin
        form1.top:=form1.top+y-yy;
        form1.left:=form1.left+x-xx;
      end;
    end;procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      b:=false;
    end;procedure TForm1.N1Click(Sender: TObject);
    begin
      close;
    end;end.
    研究研究吧!!!!!!!!!