就当成是象画笔那样的Windows资源就可以了
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
ImgForm: TImage;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ImgFormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure ImgFormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
var
myX, myY : Integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
Rgn : HRgn;
begin
//创建一个椭圆形区域
Rgn := CreateEllipticRgn(0,0,Width,Height);
SetWindowRgn(Handle,Rgn,True);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
Rgn : HRgn;
begin
//创建一个圆角矩形区域
Rgn := CreateRoundRectRgn(0,0,Width,Height,50,50);
SetWindowRgn(Handle,Rgn,True);
end;
procedure TForm1.FormCreate(Sender: TObject);
var
HR: HRGN;
begin
try
ImgForm.Picture := nil;
ImgForm.AutoSize := TRUE;
ImgForm.Picture.LoadFromFile('C:/Test.bmp');
if (ImgForm.Width<=0) or (ImgForm.Height<=0) then
Abort
else begin
Self.ClientWidth := ImgForm.Width;
Self.ClientHeight := ImgForm.Height;
end
except
end;
HR := CreateRoundRectRgn(0, 0, ClientWidth, ClientHeight, 30, 30);
SetWindowRgn(Self.Handle, HR, TRUE);
end;
procedure TForm1.ImgFormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if not Self.Visible then Exit;
if (ssLeft in Shift) then
begin
Self.Left := Self.Left + X - myX;
Self.Top := Self.Top + Y - myY;
end;
end;
procedure TForm1.ImgFormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
myX := X;
myY := Y;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.Button4Click(Sender: TObject);
var
Rgn : HRgn;
begin
//开始绘制路线
BeginPath(Canvas.Handle);
//设置背景填充模式为透明填充(缺省不透明方式OPAQUE)
SetBkMode(Canvas.Handle,TRANSPARENT);
Canvas.Font.Name := '哈哈哈';
CanVas.Font.Size := 80;
CanVas.TextOut(20,20,'哈哈哈');
Canvas.Font.Name := '是窗体?';
CanVas.Font.Size := 80;
CanVas.TextOut(150,150,'是窗体?');
EndPath(Canvas.Handle);
Rgn := PathToRegion(Canvas.Handle);
Color := clRed;
SetWindowRgn(Handle,Rgn,True);
end;
end.