我尝试创建一个窗口,可以通过多点触摸手势移动或调整大小 . 我试过这种方式 . 我捕获窗口的TouchDown-Event并将所有活动的TouchDevices保存在List中,以了解哪些TouchDevices处于活动状态 . 我捕获TouchDevices的更新和停用事件,以了解它们何时被移动以及何时被停用 . 我保存了窗口的Left和Top属性以及TouchDevice启动的位置以及每次调用Updated事件时我将Window移动到相对于TouchDevice新位置的新位置 . 如果我移动手指,这是有效的 . 但是,如果我不移动手指(或只是非常小),窗户突然开始摇动(混乱地移动),然后很快消失到屏幕外的位置 .
我认为这里的问题是,TouchDevice的函数“GetTouchPoint”只给出了与窗口相关的相对坐标(即使我设置参数为null,如果是窗口引用) . 并且因为Window移动了TouchDevice(不移动)的相对位置也发生了变化 . 所以我做了一项研究,但未能找到确定触摸设备屏幕坐标的方法 .
所以我希望有人能帮助我如何获得TouchDevice的绝对坐标 . 或者可以帮我找到另一种方法来“拖动”触摸窗口 . (我试过DragMove,但这只适用于鼠标点击,而不是TouchDowns)另外我喜欢在两个Touch设备处于活动状态时调整窗口大小,因此我也需要绝对坐标,因为否则会发生同样的效
1 回答
我遇到了这个问题,因为我的任务栏位于屏幕的右边缘,有效地将最大化窗口推向右侧 . 当应用程序的窗口未最大化并浮动在屏幕上的某个位置时,也会出现此问题 .
这是 extension method that fixes the coordinates based on the application window's position .
您可能希望传入一个托管触摸控件的窗口作为参数 . 在我的例子中,它是应用程序的主窗口 .
此外,由于您使用“多点触控”标记了问题,因此这是一种平均多个触摸坐标的方法:
我在这样的代码中使用它: