c# - ArcSegment C# 公式在 Arc WPF 上获取特定点
问题描述
我在从 Path 绘制的画布中有弧线,其中包含以下详细信息。我想得到点(115,225)。请查看屏幕截图以获取更多详细信息。请帮助我得到公式以达到点(115,225)。
startX=250
startY=250
ArcSegment Size (70,70)
ArcSegment Point (250,200)
Computation
var meanX=(startX+startX)/2-rX;//(250+250)/2-70=180
var meanY=(startY+ArcSegment.Point.Y)/2-rY;//(250+200)/2-70=225
//center Point (180,225)
//What is the formula if I want to get Point(115,225)
XAML
<Canvas Name="canvas" Background="White" Opacity="99">
<Path Stroke="Blue" MouseLeftButtonDown="Path_MouseLeftButtonDown" >
<Path.Data>
<PathGeometry>
<PathFigureCollection>
<PathFigure StartPoint="250,250" IsClosed="True">
<ArcSegment Size="70,70" IsLargeArc="True" SweepDirection="Clockwise" Point="250,200"/>
</PathFigure>
</PathFigureCollection>
</PathGeometry>
</Path.Data>
</Path>
</Canvas>
C#
private void Path_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
var curve = sender as Path;
var geometry = curve.Data as PathGeometry;
var figure = geometry.Figures.FirstOrDefault();
var arcSegment = figure.Segments.FirstOrDefault() as ArcSegment;
var startX = figure.StartPoint.X;
var yStart = figure.StartPoint.Y;
var startAngle = arcSegment.Point.X;
var sweepAngle = arcSegment.Point.Y;
var rX = arcSegment.Size.Width;
var rY = arcSegment.Size.Height;
var endAngle = startAngle + sweepAngle;
var meanX = (startX + startAngle) / 2 - rX;
var meanY = (yStart + sweepAngle) / 2 - rY;
}
解决方案
推荐阅读
- php - 为什么我的 php echo 不能使用 jquery 工作?如果执行了不正确的密码或凭据部分,login2.php 文件将加载消息
- android - 使用 Android AOSP 工具链构建任何开源软件
- html - HTML CSS 看不到元素 OpenSeadragon 查看器
- python - 用 discord.py 制作一个计时器
- node.js - req.check 在 express-validator 中不起作用?
- c++ - co_await 之后当前处理的异常是什么?
- html - Flask - 来自数据库的数据无法在 HTML 上正确呈现 - 段落之间需要空格
- python - Scipy solve_ivp没有给出预期的解决方案
- javascript - JS Regex - 将逗号内的所有内容与关键字匹配
- python - 如何确定一组区间是否可以覆盖某个成本以下的区域?