......我不会说英语......
我有问题。 我希望在使用8 ResizeThumb旋转后调整大小。(如PowerPoint) 但是当我应用 RotateTransform (orgin = 0.5)时,Resize方法很奇怪。
Item ViewModel
ViewModel具有这样的属性(X,Y,Angle,Width,Height)。
private double _X;
public double X
{
get
{
return_X;
}
set
{
value = Math.Round(value);
if(_X == value) { return; }
_X = value;
RaisePropertyChanged("X");
}
}
... and Y, Angle, Height, Width.
我试着像这样绑定。
但这两种情况都很奇怪。
所以当我在旋转后计算X,Y时,我认为一起计算角度。
public void ResizeTopCenter(DragDeltaEventArgs e)
{
Matrix m = Matrix.Identity;
m.Rotate(Angle * Math.PI/180);
Point rotated = m.Transform(new Point(e.HorizontalChanged, e.VerticalChange));
// little bit different every direction.
ViewModel.X += rotated.X;
ViewModel.Y += rotated.Y;
ViewModel.Height += rotated.Y;
}
另一种方式
Canvas.SetTop(this.designerItem, Canvas.GetTop(this.designerItem) + (this.transformOrigin.Y * deltaVertical * (1 - Math.Cos(-this.angle))));
Canvas.SetLeft(this.designerItem, Canvas.GetLeft(this.designerItem) - deltaVertical * this.transformOrigin.Y * Math.Sin(-this.angle));
......如预期的那样奇怪。
我无法写完全源,因为我下班了。 已经八小时了,明天也在继续。
请帮帮我。
谢谢你。 我很抱歉读英语。