【问题标题】:How do I position an ellipse on a Silverlight Grid?如何在 Silverlight 网格上定位椭圆?
【发布时间】:2009-04-21 20:05:21
【问题描述】:

我正在创建一个 silverlight 应用程序,它允许您在屏幕上的两个位置单击,并绘制一个椭圆,其长轴在单击位置开始和结束。可单击区域是 Silverlight Grid 控件。目前:

当你第一次点击时,我是:

  1. 在单击时放置标记 点。
  2. 创建一个椭圆并将其作为父级 到网格。
  3. 创建和设置 椭圆上的 AngleTransform。

当你移动鼠标时,我是:

  1. 计算距离 第一个点击点。
  2. 将椭圆的宽度设置为 这个长度。
  3. 计算直线的角度 点击点和网格的 X 轴。
  4. 将椭圆的 AngleTransform 角度设置为该角度。

到目前为止,一切都很好。椭圆会显示出来,它的长度和旋转角度会随着鼠标的移动而变化。

但是,椭圆的长轴偏离点击点。 如何定位 Ellipse,使其长轴从单击点开始并在当前鼠标位置结束?

【问题讨论】:

    标签: c# .net-3.5 silverlight-2.0


    【解决方案1】:

    答案竟然是:

    • 不要使用System.Windows.Shapes.Ellipse。而是使用System.Windows.Shapes.Path 并在其中嵌入EllipseGeometry

    • 还将Path.RenderTransform 设置为RotateTransform

    • 不要在Path 上设置WidthHeightStretch。而是设置EllipseGeometryCenterRadiusXRadiusY

    • 最后,将RotateTransform.Angle设置为Ellipse长轴与X轴的交角(长轴斜率ArcTan)。还将RotateTransform.CenterXCenterY 设置为EllipseGeometry Center

    【讨论】:

      【解决方案2】:

      如果我不得不猜测(代码会有所帮助),我认为您可以从开始点击点到网格左侧的差异添加填充,这应该有助于将其移动偏移量。

      【讨论】:

        【解决方案3】:

        在您的应用程序中使用 Canvas 而不是网格可能是个好主意,这样您就可以直接设置形状坐标。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-20
          • 2023-02-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多