假设我有一个表格,并在上面画了一个椭圆形。然后,我想要获取一个控件(比如picturebox),并且(同时保持控件的左上角在直线上),我想沿着绘制的椭圆逐个像素地移动控件。
基本上,我想计算椭圆中每个位置/像素的上/左点。我知道这是一个基本的公式,但我永远也记不住它叫什么或者它是如何实现的。
有人愿意帮忙吗?

发布于 2011-05-17 16:14:18
double step=1.0; // how fast do you want it to move
double halfWidth=100.0; // width of the ellipse divided by 2
double halfHeight=50.0; // height of the ellipse divided by 2
for (double angle=0; angle<360; angle+=step)
{
int x=(int)halfWidth * Math.Cos(angle/180*Math.PI);
int y=(int)halfHeight * Math.Sin(angle/180*Math.PI);
pictureBox.TopLeft=new Point(x,y);
}编辑:
现在,如果你想问为什么这样写它不能移动--你必须向它添加消息循环处理,形式如下:
Application.DoEvents();您将把它放入循环中。
发布于 2011-05-17 15:59:02
椭圆规范形式:
x-x^2/a^2 + y^2/b^2 = 1其中a =X半径,b =Y半径。因此,例如,如果您希望矩形的左上点位于椭圆的底部:
y = Sqrt((1-x^2/a^2)*b^2)更新:要将椭圆移动到指定点XC,YC,请将每个x替换为(x-XC)和(y-YC)。因此,如果您(在C#中)在矩形中绘制椭圆,那么XC = rect.X + a YC = rect.Y + b和最后的等式是y = Sqrt((1 - Pow(x - rect.X - rect.Width / 2, 2) * Pow(rect.Height / 2, 2)) + rect.Y + rect.Height / 2...似乎是正确的)
https://stackoverflow.com/questions/6027508
复制相似问题