delphi7 实现一个效能,在form上点击任何一个位置,可以动态加载image,每一个image上都用canvas画出来相同的图形
delphi7 实现一个功能,在form上点击任何一个位置,可以动态加载image,每一个image上都用canvas画出来相同的图形。

------解决思路----------------------
额,因为你是在image的Canvas上直接画了,然后实际Image的Picture是空的!所以一刷新就没了,你应该创建一个TBitmap,然后Bmp.SetSize(Image.width,Image.Height),然后再bmp.Canvas上绘制处理,处理完成之后,Image.Picture.assig(bmp),然后就可以显示了!
------解决思路----------------------
procedure TForm3.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift:
TShiftState; X, Y: Integer);
var
Image:TImage;
BMP:TBitmap;
begin
Image:=TImage.Create(Self);
Image.parent :=Self;
Image.Show;
BMP:=TBitmap.Create;
BMP.Height:=50;
BMP.Width:=50;
BMP.Canvas.Pen.Color:=clRed;
BMP.Canvas.Pen.Width:=2;
BMP.Canvas.MoveTo(10,10);
BMP.Canvas.LineTo(20,40);
Image.Picture.Assign(BMP);
Image.Left := x;
Image.Top := y;
BMP.Free;
Image.Refresh;
end;
------解决思路----------------------
实现代码:
1、新建工程,在Formk,加一个TButton,一个TEDit。
2、FormMouseUp事件
3、FormDestroy事件
4、Button1Click事件
5、编译执行,见下图。在Edit1中分别输入不同的值,可以创建Image,并在Image中画出方框。
------解决思路----------------------
额,因为你是在image的Canvas上直接画了,然后实际Image的Picture是空的!所以一刷新就没了,你应该创建一个TBitmap,然后Bmp.SetSize(Image.width,Image.Height),然后再bmp.Canvas上绘制处理,处理完成之后,Image.Picture.assig(bmp),然后就可以显示了!
------解决思路----------------------
procedure TForm3.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift:
TShiftState; X, Y: Integer);
var
Image:TImage;
BMP:TBitmap;
begin
Image:=TImage.Create(Self);
Image.parent :=Self;
Image.Show;
BMP:=TBitmap.Create;
BMP.Height:=50;
BMP.Width:=50;
BMP.Canvas.Pen.Color:=clRed;
BMP.Canvas.Pen.Width:=2;
BMP.Canvas.MoveTo(10,10);
BMP.Canvas.LineTo(20,40);
Image.Picture.Assign(BMP);
Image.Left := x;
Image.Top := y;
BMP.Free;
Image.Refresh;
end;
------解决思路----------------------
实现代码:
1、新建工程,在Formk,加一个TButton,一个TEDit。
2、FormMouseUp事件
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
MyImage : TImage;
Path:string;
iWidth:integer;
begin
iWidth:=strtoint(Edit1.text); //大小自己定
MyImage := TImage.Create(nil);
with MyImage do
begin
Parent := Form1; // 如果没有这句,新创建的myShape将不会显示在窗体上
Left := X;
Top := Y;
Width := iWidth;
Height := iWidth;
Canvas.Pen.Width:=3; // 边框宽度 3
Canvas.Pen.Color:=clRed; // 画笔颜色:红
canvas.Brush.color:=clYellow; // 填充色:黄
Canvas.Pen.Mode:=pmCopy; // 系统默认的模式,可写可不写
Canvas.Rectangle(0,0,iWidth,iWidth);// 画方框
Visible:=True;
end;
end;
3、FormDestroy事件
procedure TForm1.FormDestroy(Sender: TObject);
var i:integer;
begin
try
for i:=self.ComponentCount-1 downto 0 do
begin
if self.Components[i] is TButton then
self.Components[i].Free;
end;
except
exit;
end;
end;
4、Button1Click事件
procedure TForm1.Button1Click(Sender: TObject);
begin
close;
end;
5、编译执行,见下图。在Edit1中分别输入不同的值,可以创建Image,并在Image中画出方框。