我正在使用Manipulation
个事件(IsManipulationEnabled
,ManipulationDelta
等)来移动和缩放图片。这很好用。我还想使用右键单击创建一个选择矩形来定义图像上的区域(拖放,通常的方式,只有右键单击)。它可以在触摸(Surface)和非触摸(Win 7)设备上使用鼠标。虽然,当在表面上“右键单击”(因此用手指点击并按住)时,我会看到典型的小方块出现,但是当我移动手指之后,它会移动图像,而不是绘制矩形。看起来Manipulation
事件优先于“手指右键单击”。我做错了什么?
<Grid
Name="theGrid"
MouseMove="OnMouseMove"
MouseRightButtonUp="theGrid_MouseRightButtonUp"
MouseRightButtonDown="theGrid_MouseRightButtonDown"
Background="Black">
<Rectangle Name="RectangleContainingBackgroundImage"
IsManipulationEnabled="True"
RenderTransform="{Binding Path=ImageTransform}">
<Rectangle.Fill>
<ImageBrush x:Name="BackgroundImage" Stretch="Uniform"/>
</Rectangle.Fill>
</Rectangle>
开始时:
ScreenTouchManager touchManager = new ScreenTouchManager(this.theGrid);
this.RectangleContainingBackgroundImage.ManipulationStarting += touchManager.Image_ManipulationStarting;
this.RectangleContainingBackgroundImage.ManipulationDelta += touchManager.Image_ManipulationDelta;
this.DataContext = touchManager;
在ScreenTouchManager中:
public void Image_ManipulationStarting(object sender, ManipulationStartingEventArgs e)
{
// Ask for manipulations to be reported relative to the grid
e.ManipulationContainer = this.ManipContainer; // MC = constructor param
}
谢谢。
答案 0 :(得分:-1)
我做了一项研究,可以在这里找到答案:http://www.mobilemotion.eu/?p=1396&lang=en
VisualState更改由专用鼠标事件触发:For 例如,按钮的时候到达按下状态 发生OnMouseLeftButtonDown事件。手指触摸并保持事件是 通常使用鼠标右键映射到单击(当点击时 Windows解释说,屏幕并没有立即释放手指 这是右键单击操作) - OnMouseLeftButtonDown事件永远不会 火灾,永远不会达到压迫状态!
希望这有帮助。