读书人

image用手拖动图片,实现图片的移动也

发布时间: 2012-02-20 21:18:23 作者: rapoo

image用手拖动图片,实现图片的移动,也就是漫游。
image用手拖动图片,实现图片的移动,也就是漫游。
我用delphi做的一个程序,我在一个image里面放了一张大图,image全部显示不出来,我要用手拖动图片,这样图片就能会移动,我就能看到全部图片了。,也就是图的漫游。
就像画图工具里的那个功能一样,有一个大图时,我们按下鼠标,鼠标呈现手形,移动鼠标图片就会移动,帮帮我,


[解决办法]
把图片放在一个Panel里面,设置图片的AutoSize:=true,Cursor:=crHandPoint;
通过改变Panel的大小控制图片可见内容的范围。
然后在图片的OnMouseMove写相关代码,控制图片的Top,Left值。
[解决办法]
既然我已经写出代码来了,就贴出来吧,希望楼上不要生气.

var
CanMove : boolean;
X1, Y1 : integer;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
CanMove := True;
Image1.Cursor := crHandPoint;
X1 := X;
Y1 := Y;
end;

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
CanMove := False;
Image1.Cursor := crDefault;
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if CanMove then
begin
Image1.Left := Image1.Left + X - X1;
Image1.Top := Image1.Top + Y - Y1;
X1 := X;
Y1 := Y;
end;
end;

闪烁问题,自己解决.
[解决办法]
哈哈哈,你说你把它的长宽设的都很大了,是多大?也不是一样没说吗,还来指责别人。另外,我也没哪句话能证明自己水平高,我只是一个看出了代码问题的人而已,可以理解你的心情,呵呵,我回复时没看你是谁,只看了文字和代码,没有针对你所谓的“我们”,你太敏感了吧?
最后,你说到我回复的风格,我确实是喜欢只指出代码的核心(如果能够的话),类似你那种从form.XXX(); begin 开始写起的的确不同啊,哈哈,但这仅仅是风格问题,你也不能说我那个贴子里的回复是错的,你也不要看它短就说我没试验过。所以,你让我承认错误,我真有点莫明其妙了。再小PS一下,发觉你很喜欢翻旧贴啊,混水园的那种习气,别带到这里来,ok?
[解决办法]
TImage有大小限制的说法很难理解。lihuasoft(一九七五)可以实现楼主的效果。
[解决办法]
在窗口上先放一个ScrollBox,设置属性去掉里面的滚动条。ScrollBox里面再放Image,它的AutoSize属性可以设置成True,Cursor设成crHandPoint。

属性LZ自己慢慢设吧,代码如下:

TForm2 = class(TForm)
ScrollBox1: TScrollBox;
Image1: TImage;
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
X,Y:Integer;
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Self.X:=X;
Self.Y:=Y;
end;

procedure TForm2.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if ssLeft in Shift then
ScrollBox1.ScrollBy(X-Self.X,Y-Self.Y);
end;

读书人网 >.NET

热点推荐