我有一个大约4048x8096的画布,当我尝试放大时,它不会在手势点放大,它总是朝着点(0,0)移动,这是画布的's位置,这是我使用的代码: 当达到缩放限制时,它也会闪烁。
private void GraphSurface_ManipulationDelta(object sender, System.Windows.Input.ManipulationDeltaEventArgs e)
{
var matrix = ((MatrixTransform)this.RenderTransform).Matrix;
Point center = new Point(this.ActualWidth / 2, this.ActualHeight / 2);
center = matrix.Transform(center);
if (Scale <= ZoomInLimit && Scale >= ZoomOutLimit)
{
matrix.ScaleAt(e.DeltaManipulation.Scale.X, e.DeltaManipulation.Scale.Y, center.X, center.Y);
}
if (Scale > ZoomInLimit)
{
matrix.M11 -= 0.001;
matrix.M22 -= 0.001;
}
else if (Scale < ZoomOutLimit)
{
matrix.M11 = ZoomOutLimit + 0.001;
matrix.M22 = ZoomOutLimit + 0.001;
}
((MatrixTransform)this.RenderTransform).Matrix = matrix;
e.Handled = true;
}
答案 0 :(得分:0)
这是一个放大手势点的演示。使用底部示例。代码是JS,而不是Java,但它应该转换好了。用画布对象替换awesome_tiger.svg。也许这将为您提供您自己的代码所需的示例。希望有所帮助。