本文整理汇总了C#中System.Windows.Controls.ScrollViewer.TranslatePoint方法的典型用法代码示例。如果您正苦于以下问题:C# ScrollViewer.TranslatePoint方法的具体用法?C# ScrollViewer.TranslatePoint怎么用?C# ScrollViewer.TranslatePoint使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Windows.Controls.ScrollViewer
的用法示例。
在下文中一共展示了ScrollViewer.TranslatePoint方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: set
private void set(ScrollChangedEventArgs e, ScrollViewer sv, Canvas canvas)
{
if (e.ExtentHeightChange != 0 || e.ExtentWidthChange != 0)
{
Point? targetBefore = null;
Point? targetNow = null;
if (!lastMousePositionOnTarget.HasValue)
{
if (lastCenterPositionOnTarget.HasValue)
{
var centerOfViewport = new Point(sv.ViewportWidth / 2, sv.ViewportHeight / 2);
Point centerOfTargetNow = sv.TranslatePoint(centerOfViewport, canvas);
targetBefore = lastCenterPositionOnTarget;
targetNow = centerOfTargetNow;
}
}
else
{
targetBefore = lastMousePositionOnTarget;
targetNow = Mouse.GetPosition(canvas);
lastMousePositionOnTarget = null;
}
if (targetBefore.HasValue)
{
double dXInTargetPixels = targetNow.Value.X - targetBefore.Value.X;
double dYInTargetPixels = targetNow.Value.Y - targetBefore.Value.Y;
double multiplicatorX = e.ExtentWidth / canvas.Width;
double multiplicatorY = e.ExtentHeight / canvas.Height;
double newOffsetX = sv.HorizontalOffset - dXInTargetPixels * multiplicatorX;
double newOffsetY = sv.VerticalOffset - dYInTargetPixels * multiplicatorY;
if (double.IsNaN(newOffsetX) || double.IsNaN(newOffsetY))
{
return;
}
sv.ScrollToHorizontalOffset(newOffsetX);
sv.ScrollToVerticalOffset(newOffsetY);
}
}
}