我正在创建一个silverlight应用程序,它允许您在屏幕上的两个位置单击并绘制一个椭圆,其长轴在点击位置开始和结束。可点击区域是Silverlight网格控件。目前:
首次点击时,我是:
当你移动鼠标时,我是:
到目前为止,这么好。显示椭圆,其长度和旋转角度在移动时跟随鼠标。
但是,椭圆的长轴偏离点击点。 如何定位椭圆,使其长轴从点击点开始,到当前鼠标位置结束?
答案 0 :(得分:2)
答案结果是:
请勿使用System.Windows.Shapes.Ellipse
。而是使用System.Windows.Shapes.Path
并在其中嵌入EllipseGeometry
。
同时将Path.RenderTransform
设为RotateTransform
。
请勿在{{1}}上设置Width
或Height
或Stretch
。而是设置Path
的{{1}},Center
和RadiusX
。
最后,将RadiusY
设置为EllipseGeometry
长轴和X轴(长轴斜率的RotateTransform.Angle
)的交点。同时将Ellipse
和ArcTan
设置为RotateTransform.CenterX
CenterY
。
答案 1 :(得分:0)
如果我不得不猜测(代码会有帮助),我认为你可以从开始点击点到网格左侧的差异添加填充,这应该有助于将其移动偏移。
答案 2 :(得分:0)
对于您的应用程序而言,使用Canvas而不是网格可能是个好主意,而不是直接设置coordianates形状。