你可以使用GDI+实现的。我前几天刚刚实现了一个这样的窗体。只要你选择的png图片的效果好。做出的窗体是绝对的漂亮。必须的 GDIPOBJ 这个单元从网上搜一下,好几个单元,实现了WindowsGDI+的功能给你一段代码:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls, ExtCtrls, PngImage, jpeg;type TForm1 = class(TForm) PopupMenu1: TPopupMenu; N1: TMenuItem; N2: TMenuItem; procedure FormCreate(Sender: TObject); procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure N2Click(Sender: TObject); procedure N1Click(Sender: TObject); procedure FormKeyPress(Sender: TObject; var Key: Char); private { Private declarations } public AppPath: string; procedure SetBack(FileName: string); { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}uses ActiveX, GDIPOBJ;procedure TForm1.FormCreate(Sender: TObject);begin AppPath := ExtractFilePath(Application.ExeName); //这句是必须有的. SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_LAYERED); SetBack(AppPath + 'test.png');end; procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin ReleaseCapture; Perform(WM_SYSCOMMAND, SC_MOVE or HTCLIENT, 0); // 拖动 end;//这是关键的透明代码procedure TForm1.SetBack(FileName: string);var vBitmap: HBITMAP; vOldBitmap: HBITMAP; vPoint1, vPoint2: TPoint; vSize: TSize; vBlendFunction: TBlendFunction; vDC: HDC; vBitmapInfo: TBitmapInfoHeader; vDIBSection: TDIBSection; gpbmp: TGPBitmap;begin gpbmp := TGPBitmap.Create(FileName); vBitmapInfo.biSize := SizeOf(vBitmapInfo); gpbmp.GetHBITMAP(0, vBitmap); GetObject(vBitmap, SizeOf(vDIBSection), @vDIBSection); vPoint1 := Point(Left, Top); vPoint2 := Point(0, 0); vSize.cx := vDIBSection.dsBm.bmWidth; vSize.cy := vDIBSection.dsBm.bmHeight; vBlendFunction.BlendOp := AC_SRC_OVER; vBlendFunction.BlendFlags := 0; vBlendFunction.SourceConstantAlpha := $FF; // 透明度 vBlendFunction.AlphaFormat := AC_SRC_ALPHA; //同上 vDC := CreateCompatibleDC(Canvas.Handle); vOldBitmap := SelectObject(vDC, vBitmap); self.Width := vSize.cx; self.Height := vSize.cy; UpdateLayeredWindow(Handle, Canvas.Handle, @vPoint1, @vSize, vDC, @vPoint2, 0, @vBlendFunction, ULW_ALPHA); SelectObject(vDC, vOldBitmap); DeleteDC(vDC); DeleteObject(vBitmap); gpbmp.Free; end;procedure TForm1.N2Click(Sender: TObject);begin Application.Terminate;end;procedure TForm1.N1Click(Sender: TObject);var OD: TOpenDialog;begin OD := TOpenDialog.Create(self); OD.Filter := '*.*|*.jpg;*.ico;*.bmp;*.gif;*.png;*.jpeg'; if OD.Execute then begin SetBack(OD.FileName); end; FreeAndNil(OD); end;procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);begin if Key = #27 then Application.Terminate;end;end.