比如下绘制的对象,如何才能选择它,并进行移动,修改大小?请问,有没具体的代码或思路?procedure TForm1.whRuler1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
    image1.Canvas.Pen.Style:=psSolid;
    image1.Canvas.Pen.Color:=clred;     
    image1.Canvas.Pen.Width:=1;  
    image1.Canvas.Brush.Style := bsClear;
    image1.Canvas.Ellipse(fx,fy,x,y)
end;

解决方案 »

  1.   

    选中:判断鼠标点击区域,在特定的区域内,在区域的四个叫上画几个小矩形。
    移动:选中的情况下,判断鼠标的移动,擦除以前的图形,在新的位置绘出。可以这样做。修改大小:可以把图形动态的绘制在一个canvas上,在拖动canvas的时候修改图形大小
      

  2.   

    你必须记录下你绘制的内容,这样才能进行鼠标命中判断。
    用google搜索一下”Delphi 矢量图 源码“可能会找到一些源代码参考。
      

  3.   

    写一个类,维护你的绘图元素,也即是写一个绘图类,每个画上去的元素,都作为一个对象放到列表中,然后判断鼠标位置是否在其中的某个元素范围内,直接在form上判断,把你累死
      

  4.   

    procedure TForm1.whRuler1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
        image1.Canvas.Pen.Style:=psSolid;
        image1.Canvas.Pen.Color:=clred;     
        image1.Canvas.Pen.Width:=1;  
        image1.Canvas.Brush.Style := bsClear;
        image1.Canvas.Ellipse(fx,fy,x,y)
    end;//简单的模拟拖动
    mouse down先记录入down点, OldPoint.X := X;   OldPoint.Y :=Y;    
    mouse up后,  NewPont.X := X;  NewPoint.Y := Y;x/y轴:   NewPoint.X-OldPoint.X
      NewPoint.Y-NewPoint.Y;  1     image1.Canvas.Ellipse(fx,fy,相应的值, 相应的值);   //或其它