gpt4 book ai didi

C# 使用 GraphicsPath 绘制圆形,其中部分被切掉

转载 作者:太空狗 更新时间:2023-10-30 00:31:34 32 4
gpt4 key购买 nike

我正在尝试绘制类似具有 3 个参数的形状

  • 半径
  • 居中
  • cutOutLen

切掉的部分是圆圈的底部。

enter image description here

我发现我可以使用

var path = new GraphicsPath();
path.AddEllipse(new RectangleF(center.X - radius, center.Y - radius, radius*2, radius*2))
// ....
g.DrawPath(path);

但是,我怎么画这样的东西呢?

顺便说一句,那个形状的名字是什么?由于缺乏术语,我无法搜索以前的问题或其他内容。

谢谢。

最佳答案

给你,把它放在一些绘画事件中:

// set up your values
float radius = 50;
PointF center = new Point( 60,60);
float cutOutLen = 20;

RectangleF circleRect =
new RectangleF(center.X - radius, center.Y - radius, radius * 2, radius * 2);

// the angle
float alpha = (float) (Math.Asin(1f * (radius - cutOutLen) / radius) / Math.PI * 180);

var path = new GraphicsPath();
path.AddArc(circleRect, 180 - alpha, 180 + 2 * alpha);
path.CloseFigure();

e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
e.Graphics.FillPath(Brushes.Yellow, path);
e.Graphics.DrawPath(Pens.Red, path);

path.Dispose();

结果如下:

cut circle.

我不确定切割圆的术语;实际上它是一个 Thales Cirlce。

关于C# 使用 GraphicsPath 绘制圆形,其中部分被切掉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24820724/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com