触摸屏多点如何编写

mmfeng 2012-09-12 10:52:34
做公司的一个触摸屏程序,想实现这样的功能:当两个点住一个form时(如两个手指点着),移动两个手指就能拖动这个form移动,就如iphone那样,可移动和扩大,现在想先实现移动,如何做啊?
用的是RAD2010,看2010的介绍有这样的功能,但从没做过,有哪位做过这样的程序吗?
...全文
298 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
银点 2014-03-25
  • 打赏
  • 举报
回复
楼主你的问题解决了么?
mmfeng 2012-09-15
  • 打赏
  • 举报
回复
面板上的Properties--Touch--InteractiveGestures--igTwoFingerTar
是不是两点触摸?怎么用法?
我不懂电脑 2012-09-14
  • 打赏
  • 举报
回复
bcb2010以上版本增加了手势控件
mmfeng 2012-09-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
bcb2010以上版本增加了手势控件
[/Quote]
知道简单手势控件的用法,也有图一看就明白,但是多点操控不知怎么做法,如拖动、放大等。
baojiang_68 2012-09-13
  • 打赏
  • 举报
回复
是不是可以这样做,用两个透明控件,分放左右,设两个变量,当点击两个控件时,两个变量的值改变成你规定的值,当两值符合要求时,Form产生放大的动画。当然也可以通过这两个控件所获得的XY值,决定放大或缩小的尺寸。移动也可以不用两个手指,在Form上做一个移动的程序就可以了,在MouseDown中加入ReleaseCapture();
SendMessage(this-> Handle,WM_SYSCOMMAND,0XF012,0);
就可以移动。
ccrun.com 2012-09-13
  • 打赏
  • 举报
回复
Windows7+的系统才支持多点触摸。高版本的VCL中提供了Gustures组件,支持触摸操作。
缘中人 2012-09-13
  • 打赏
  • 举报
回复
有点挑战
mmfeng 2012-09-13
  • 打赏
  • 举报
回复
ccrun
(妖哥 低调 冷静 专注 敬业)
楼 得分:0回复于:2012-09-13 09:31:32Windows7+的系统才支持多点触摸。高版本的VCL中提供了Gustures组件,支持触摸操作。

===========================
现在只会用GestureManager1中的简单手势,但对如何移动、放大、缩小不知怎么做。。。







------------------------------------------
baojiang_68
(花果山水帘洞)
#3楼 得分:0回复于:2012-09-13 09:38:11是不是可以这样做,用两个透明控件,分放左右,设两个变量,当点击两个控件时,两个变量的值改变成你规定的值,当两值符合要求时,Form产生放大的动画。当然也可以通过这两个控件所获得的XY值,决定放大或缩小的尺寸。移动也可以不用两个手指,在Form上做一个移动的程序就可以了,在MouseDown中加入ReleaseCapture();
SendMessage(this-> Handle,WM_SYSCOMMAND,0XF012,0);
就可以移动。
=========================================

但是如果这两个控件放的位置有要求,操作者的两个手指可能刚好不在这个位置上就不行了,看IPhone多点是任意位置上的。



---------------------------------------
看到delphi有这样的代码:
procedure TInteractiveGestureForm.OnPan(Sender: TObject; Delta: TPoint);
var
I: Integer;
Image, Image2: TImage;
begin
//Pan
for I := 0 to FImages.Count - 1 do
begin
Image := FImages[I];
Image.Left := Image.Left - Delta.X;
end;

//Rotate images
Image := FImages[0];
if Image.Left + Image.Width < 0 then
begin
FImages.Add(Image);
FImages.Delete(0);
end
else if Image.Left > 0 then
begin
FImages.Insert(0, FImages[FImages.Count - 1]);
FImages.Delete(FImages.Count - 1);
Image := FImages[0];
Image2 := FImages[1];
Image.Left := Image2.Left - Image.Width;
end;

end;

procedure TInteractiveGestureForm.Panel1Gesture(Sender: TObject;
const EventInfo: TGestureEventInfo; var Handled: Boolean);
begin
if EventInfo.GestureID = igiPan then
begin
if not (gfBegin in EventInfo.Flags) then
OnPan(Sender, Point(FLast.X - EventInfo.Location.X,
Flast.Y - EventInfo.Location.Y));
FLast := EventInfo.Location;
end;
end;

end.

不是很熟悉Delphi, 有哪个能说明一下它么?OnPan 这个函数在C++builder中是什么?


13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧