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

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事件
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中画出方框。