作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有 2 分
Point p1 = new Pen(100, 100);
Point p2 = new Pen(200, 150);
然后我用给定的半径为该点绘制椭圆,该点位于椭圆的中心。
int radius = 5;
RectangleF rectangle = new RectangleF();
rectangle.Width = radius * 2;
rectangle.Height = radius * 2;
rectangle.X = Convert.ToSingle(p1.X - radius);
rectangle.Y = Convert.ToSingle(p1.Y - radius);
g.FillEllipse(brush, rectangle);
rectangle.X = Convert.ToSingle(p2.X - radius);
rectangle.Y = Convert.ToSingle(p2.Y - radius);
g.FillEllipse(brush, rectangle);
g.DrawLine(pen, p1, p2);
如果我在这些点之间画线,我会得到从一个中心到另一个中心的线。目前我可以接受,但我想做的是,这条线从椭圆的边缘开始,所以它不会穿过它。我怎样才能做到这一点?
最佳答案
找到答案:
public static PointF getPointOnCircle(PointF p1, PointF p2, Int32 radius)
{
PointF Pointref = PointF.Subtract(p2, new SizeF(p1));
double degrees = Math.Atan2(Pointref.Y, Pointref.X);
double cosx1 = Math.Cos(degrees);
double siny1 = Math.Sin(degrees);
double cosx2 = Math.Cos(degrees + Math.PI);
double siny2 = Math.Sin(degrees + Math.PI);
return new PointF((int)(cosx1 * (float)(radius) + (float)p1.X), (int)(siny1 * (float)(radius) + (float)p1.Y));
}
关于C# 从圆边到圆边画线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10381863/
我是一名优秀的程序员,十分优秀!