Delphi中图片的拖动和缩放

在Form页面(非image控件)的FormMouseWheelUp和FormMouseWheelDown事件中
执行下面的代码可以实现图片缩放功能

即在滚轮事件时调整图片的大小.

image1.Width := image1.Width + Integer(Trunc(image1.Width/10));
    image1.Height := image1.Height + Integer(Trunc(image1.Height/10));

image1.Width := image1.Width - Integer(Trunc(image1.Width/10));
    image1.Height := image1.Height - Integer(Trunc(image1.Height/10));

在Image控件的OnMouseDown事件 OnMouseUp 事件 OnMouseMove事件中
分别执行下面代码可以实现图片拖动.


procedure TFkf_tools.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
    if Button=mbleft then
    begin
        CanMove := true;
        XPos := X;
        YPos := Y;
    end;

end;

procedure TFkf_tools.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
    if Button=mbleft then
    begin
        CanMove := false;
    end;  
end;

procedure TFkf_tools.Image1MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
begin
    if CanMove then
    begin
        image1.Left := image1.Left+X-XPos;
        image1.Top := image1.Top+Y-YPos;
    end;
end;

获取scrollbox的偏移量的方法如下:

Xpy := ScrollBox1.HorzScrollBar.Position;
Ypy := ScrollBox1.VertScrollBar.Position;

获取图片image控件的左边距和上边距:

Image1.left
Image1.top

 

你可能感兴趣的:(Delphi,delphi)