首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

画圆形图像有关问题

2012-02-27 
画圆形图像问题procedure TForm1.Button1Click(Sender: TObject)varbmp:TBitmaprgn:HRGNbeginbmp:TBit

画圆形图像问题
procedure TForm1.Button1Click(Sender: TObject);

  var
  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上画的一样的圆形图像。

[解决办法]
unit Unit1;

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

热点排行