111,097
社区成员




private void inkCanvas_ManipulationStarting(object sender, ManipulationStartingEventArgs e)
{
e.ManipulationContainer = canvas;
e.Mode = ManipulationModes.All;
inkCanvas.EditingMode = InkCanvasEditingMode.None;
}
private void inkCanvas_ManipulationDelta(object sender, ManipulationDeltaEventArgs e)
{
FrameworkElement element = (FrameworkElement)e.Source;
element.Opacity = 0.9;
try
{
Matrix matrix = ((MatrixTransform)element.RenderTransform).Matrix;
var deltaManipulation = e.DeltaManipulation;
Point center = new Point(element.Margin.Left, element.Margin.Top);
center = matrix.Transform(center);
matrix.ScaleAt(deltaManipulation.Scale.X, deltaManipulation.Scale.Y, center.X, center.Y);
//matrix.RotateAt(e.DeltaManipulation.Rotation, center.X, center.Y);
if (this.canvas.Margin.Left > 0 && this.canvas.Margin.Top > 0) { }
if (this.Margin.Left > 0&&this.Margin.Top<0)
{
matrix.Translate(0, deltaManipulation.Translation.Y);
}
else if (this.Margin.Left < 0 && this.Margin.Top > 0)
{
matrix.Translate(deltaManipulation.Translation.X, 0);
}
else if (this.Margin.Left > 0 && this.Margin.Top > 0)
{
matrix.Translate(0, 0);
this.Margin = new Thickness(0, 0, this.Margin.Right, this.Margin.Bottom);
}
else
{
matrix.Translate(deltaManipulation.Translation.X, deltaManipulation.Translation.Y);
}
((MatrixTransform)element.RenderTransform).Matrix = matrix;
}
catch { throw new Exception(); }
}
private void inkCanvas_ManipulationCompleted(object sender, ManipulationCompletedEventArgs e)
{
FrameworkElement element = (FrameworkElement)e.Source;
element.Opacity = 1;
if (this.canvas.Margin.Left > 0 && this.canvas.Margin.Top > 0) { }
Point point=inkCanvas.TransformToVisual(canvas).Transform(new Point());
//MessageBox.Show(point.X + "," + point.Y+"|"+element.Margin.Top+","+element.Margin.Left);
if (point.X > 0)
{
System.Windows.Controls.Canvas.SetLeft(inkCanvas, 0);
//inkCanvas.Margin = new Thickness(0, inkCanvas.Margin.Top, inkCanvas.Margin.Right, inkCanvas.Margin.Bottom);
}
if (point.Y > 0)
{
System.Windows.Controls.Canvas.SetTop(inkCanvas, 0);
//inkCanvas.Margin = new Thickness(inkCanvas.Margin.Left, 0, inkCanvas.Margin.Right, inkCanvas.Margin.Bottom);
}
}