【发布时间】:2020-04-26 08:15:31
【问题描述】:
我在 Scrollviewer 中有一个 Canvas(ZoomMode="true")。在画布上有我可以用鼠标移动的网格
<ScrollViewer ZoomMode="Enabled" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Canvas x:Name="sala" Width="3000" Height="3000">
<Grid x:Name="tavolo1" Canvas.Left="200" Canvas.Top="200" ManipulationDelta="UIElement_OnManipulationDelta" ManipulationMode="All" Width="100" Height="200" >
<Grid.RenderTransform>
<TranslateTransform/>
</Grid.RenderTransform>
</Grid>
</Canvas>
</Scrollviewer>
允许此操作的代码隐藏函数是:
private void UIElement_OnManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
{
Grid stackDragged = (Grid) sender;
(stackDragged.RenderTransform as TranslateTransform).X += e.Delta.Translation.X;
(stackDragged.RenderTransform as TranslateTransform).Y += e.Delta.Translation.Y;
}
当我在不缩放的情况下移动网格时,网格在 Canvas 中的坐标变成了鼠标的坐标; 但是当我使用缩放进行此操作时,网格的“平移”会随着缩放比例缩放,因此网格不会获取鼠标的真实坐标。
【问题讨论】: