type TForm1 = class(TForm) Bevel1: TBevel; procedure FormCreate(Sender: TObject); procedure FormPaint(Sender: TObject); procedure FormDblClick(Sender: TObject); private { Private declarations } Rect: Array[0..10] of TPoint; public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); var i : Integer; begin Self.Canvas.Pen.Color := clBlue; for i := 0 to 10 do begin Self.Rect[i].X := Random(Self.Width); Self.Rect[i].Y := Random(Self.Height); end; Self.Bevel1.Align := alClient; Self.Bevel1.Visible := False; end;
procedure TForm1.FormPaint(Sender: TObject); var i: Integer; begin Self.Canvas.MoveTo(Self.Rect[0].X, Self.Rect[0].Y); for i := 1 to 10 do begin Self.Canvas.LineTo(Self.Rect[i].X, Self.Rect[i].Y); end; end;
procedure TForm1.FormDblClick(Sender: TObject); var Bit: TBitMap; begin Bit := TBitMap.Create; Bit.Width := Self.Bevel1.Width; Bit.Height := Self.Bevel1.Height; BitBlt(Bit.Canvas.Handle, 0, 0, Self.Bevel1.Width, Self.Bevel1.Height, Self.Canvas.Handle, 0, 0, SRCCOPY); Bit.SaveToFile('d:\aa.bmp'); Bit.Free; end;
bmp: TBitmap;
rgn: HRGN;
begin
bmp := TBitmap.Create;
try
bmp.LoadFromFile('D:\免疫渗率图像\图片 004.BMP'); // 你想显示的图片 rgn := CreateEllipticRgn(126,106,442,422);
if rgn <> 0 then begin
try
SelectObject(Canvas.Handle, rgn);
Canvas.Draw(0,0,bmp);
finally
DeleteObject(rgn);
end;
end;
finally
bmp.Free;
end;
end;
用上面的代码可以在form中画出图像中的一块圆形区域,不知道怎么保存下来form上画出的圆形区域,为了保存想在image控件上画,但是为什么把canvas.draw改成image1.canvas.draw画出的图像还是原图呢,得不到跟form上画的一样的圆形图像。
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
type
TForm1 = class(TForm)
Bevel1: TBevel;
procedure FormCreate(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure FormDblClick(Sender: TObject);
private
{ Private declarations }
Rect: Array[0..10] of TPoint;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
i : Integer;
begin
Self.Canvas.Pen.Color := clBlue;
for i := 0 to 10 do
begin
Self.Rect[i].X := Random(Self.Width);
Self.Rect[i].Y := Random(Self.Height);
end;
Self.Bevel1.Align := alClient;
Self.Bevel1.Visible := False;
end;
procedure TForm1.FormPaint(Sender: TObject);
var
i: Integer;
begin
Self.Canvas.MoveTo(Self.Rect[0].X, Self.Rect[0].Y);
for i := 1 to 10 do
begin
Self.Canvas.LineTo(Self.Rect[i].X, Self.Rect[i].Y);
end;
end;
procedure TForm1.FormDblClick(Sender: TObject);
var
Bit: TBitMap;
begin
Bit := TBitMap.Create;
Bit.Width := Self.Bevel1.Width;
Bit.Height := Self.Bevel1.Height;
BitBlt(Bit.Canvas.Handle, 0, 0, Self.Bevel1.Width,
Self.Bevel1.Height, Self.Canvas.Handle, 0, 0, SRCCOPY);
Bit.SaveToFile('d:\aa.bmp');
Bit.Free;
end;
end