c# - 动画基础数学

标签 c# .net animation graphics geometry

假设我有一个表格并在上面画了一个椭圆形。然后我想获取一个控件(例如图片框)并且(同时保持控件的左上角正好在线上)我想按照绘制的椭圆逐像素移动控件。

基本上我想计算椭圆形中每个位置/像素的顶部/左侧点。我知道它是一个基本公式,但我一辈子都记不起它叫什么或它是如何完成的。

有人愿意帮忙吗?

Example

最佳答案

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();

您将把它放在循环中。

关于c# - 动画基础数学,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6027508/

相关文章:

language-agnostic - 是否有将四元数旋转转换为欧拉角旋转的算法?

animation - 如何在 LOVE 2D 中创建行走动画

python - 动画在 matplotlib 中没有动画

asp.net - 检查服务器对 HTML 5 的支持?

.net - 从packages.config 迁移到PackageReferences 导致无法加载文件或程序集 "..."或其依赖项之一。访问被拒绝

c# - 混合 System.Transactions 与 SqlTransactions

c# - 如何测量边缘检测图像中的边缘长度?

c# - Parallel.Foreach 中的 Ninject 异常

c# - 在 C# 中模拟 Excel 的 YearFrac

c# - 在 C# 中使用百分比值调整图像大小