我有一个Canvas
覆盖PointerMoved
事件,如果用户“绘制”它就会做一些事情。现在,我正在尝试将Canvas
移到ScrollViewer
内,以添加完美的缩放和滚动效果。
<ScrollViewer x:Name="MainScrollViewer" Grid.Column="1"
VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto"
ZoomMode="Enabled" MinZoomFactor="0.5" MaxZoomFactor="2.0" >
<Canvas x:Name="MainCanvas" Background="#000000"
HorizontalAlignment="Left" VerticalAlignment="Top"
PointerMoved="MainCanvas_PointerMoved" />
</ScrollViewer>
然而,ScrollViewer
捕获了所有指针移动事件,这导致主要的绘制程序不再起作用。
有关如何解决这个问题的想法吗?
答案 0 :(得分:2)
在仍允许缩放/平移的同时使用触摸绘图 - 目前XAML不支持此功能。您需要关闭缩放/平移以便能够使用Pointer事件进行绘制,并且无法在自定义操作的同时获得系统缩放和平移行为。但是,您可以通过设置ManipulationMode = All来尝试使用Manipulation事件,并手动使用Scale和Translate值处理两个手指滚动和捏缩放。
详情请见:Touch based drawing app with a Canvas inside a ScrollViewer
我没有使用canvas和scrollview,但我认为我发现它会帮助你:)
答案 1 :(得分:0)
有一招!您可以添加工具按钮(如手)以切换两个条件。
以编程方式更改ScrollViewer属性:
MainScrollViewer.HorizontalScrollMode = ScrollMode.Auto;
MainScrollViewer.VerticalScrollMode = ScrollMode.Auto;
MainScrollViewer.ZoomMode = ZoomMode.Enabled;