VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 654|回复: 3

这个程序如何实现?

[复制链接]

2

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-3-23 02:00:01 | 显示全部楼层 |阅读模式
编写一个程序,使得窗体上的一红色小球能按圆形运动,给定圆形轨迹方程为:
x=rsina
y=rcosa
r为圆的半径,a为圆心角
以下是我写的程序,可是这个小圆不能平滑的画园啊!
Graphics g=this.CreateGraphics();
                       
                        Pen redpen=new Pen(Color.Red,2);
                        float r=100F;
                    double f=0;
                        float x=100.0F;
                        float y=100.0F;
                        float width=20.0F;
                        float height=20.0F;
                        for(int i=0;i<360000;i++)
                        {
                                f+=45;
                                float a=(float)Math.Sin(f);
                                float b=(float)Math.Cos(f);
                                g.DrawEllipse(redpen,x+r*a,y+r*b,width,height);
                                g.Clear(this.BackColor);
                        }
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-7-3 22:30:01 | 显示全部楼层
在WPF中这个简直太简单啦
回复

使用道具 举报

0

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-7-4 21:15:01 | 显示全部楼层
关注一下了,我也想知道如何平滑的画圆。
回复

使用道具 举报

0

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-7-5 09:00:01 | 显示全部楼层
Sin()函数中要求的是弧度,不是角度!
弧度=角度*3.14/180
所以,楼主试试下面的代码:
Graphics g=this.CreateGraphics();

Pen redpen=new Pen(Color.Red,2);
float r=100F;
double f=0;
float x=100.0F;
float y=100.0F;
float width=20.0F;
float height=20.0F;
for(int i=0;i<360;i++)  //360度为一个整圆
{
        float a=(float)Math.Sin(i*3.14/180);//弧度=角度*3.14/180
        float b=(float)Math.Cos(i*3.14/180);//同上
        g.DrawEllipse(redpen,x+r*a,y+r*b,width,height);
        System.Threading.Thread.Sleep(100);//延时一下
        g.Clear(this.BackColor);
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表