我用一个Image控件显示背景图片,另一个Image控件显示一个图标指示背景上的某点,现在需要改变背景的大小,怎样使图标指示的位置不变?请各位高手指点。

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      OldSize, MoveXY: TPoint;
    begin
    //将背景图片未改变大小的尺寸保存下来
      OldSize.X := Image1.Width;
      OldSize.Y := Image1.Height;
      Image1.Width := 100;
      Image1.Height := 100;
    //得到改变大小比例,为取得比较精确的值,将各值放大100倍
      MoveXY.X := Round((Image1.Width / OldSize.X) * 100);
      MoveXY.Y := Round((Image1.Height / OldSize.Y) * 100);
    //换算成坐标,除以100,得到精确的坐标
      Image2.Left := (Image2.Left * MoveXY.X) div 100;
      Image2.Top := (Image2.Top * MoveXY.Y) div 100;
    end;
      

  2.   

    我用来指示位置的Image控件全部是动态添加的
      

  3.   

    修改Image的Anchors四个属性
      

  4.   

    已经解决,用controlcount捕获所有控件,然后判断是不是是需要的控件,然后再改变坐标。