中易网

这个C#里画五角星的函数,高手解释一下,谢谢

答案:2  悬赏:50  
解决时间 2021-03-13 02:08
protected override void OnPaint(PaintEventArgs args)
{
Graphics grfx = args.Grphics;

int cx = 300;
int cy = 160;

Point[] apt = new Point[5];
for (int i = 0; i< apt.Length; i++)
{
double dAngle = (i * 0.8 - 0.5) * Math.PI;
apt[i] = new Point((int)(cx * (0.25 + 0.24 * Math.Cos(dAgngle))),(int)(cy * (0.5 + 0.48 * Math.Sin(dAngle))));
}

grfx.FillPolygon(new SolidBrush(Color.Red),
apt,
FillMode.Winding);
}

apt[i] = new Point((int)(cx * (0.25 + 0.24 * Math.Cos(dAgngle))),(int)(cy * (0.5 + 0.48 * Math.Sin(dAngle))))
这一步看不懂

不是坐标点看不懂,是这个算法不懂,0.25,0.24这些算法是怎么得到?
最佳答案
apt[i] = new Point((int)(cx * (0.25 + 0.24 * Math.Cos(dAgngle))),(int)(cy * (0.5 + 0.48 * Math.Sin(dAngle))))

分解开来,是:
new Point(x,y);
x = (int)(cx * (0.25 + 0.24 * Math.Cos(dAgngle)))
0.24乘以dAgngle的COS值,加上0.25,再把结果乘以cx,最后把运算结果转换成int类型
y = (int)(cy * (0.5 + 0.48 * Math.Sin(dAngle)))
0.48乘以dAgngle的SIN值,加上0.5,再把结果乘以cy,最后把运算结果转换成int类型
全部回答
试试: void mydraw(graphics g,point center,int radius){ point[] pts = new point[5]; //获取五角星5个顶点 pts[0] = new point(center.x,center.y - radius); pts[1] = rotate72(pts[0],center); pts[2] = rotate72(pts[1],center); pts[3] = rotate72(pts[2],center); pts[4] = rotate72(pts[3],center); //简单地拉5条线 pen pen = new pen(new solidbrush(color.blue)); g.drawline(pen,pts[0],pts[2]); g.drawline(pen,pts[0],pts[3]); g.drawline(pen,pts[1],pts[3]); g.drawline(pen,pts[1],pts[4]); g.drawline(pen,pts[2],pts[4]); } //旋转72 private point rotate72(point pt,point center){ int x = (int)(center.x + (pt.x - center.x) * math.cos(72.0 * math.pi/180) - (pt.y - center.y) * math.sin(72.0 * math.pi/180)), y = (int)(center.y + (pt.x - center.x) * math.sin(72.0 * math.pi/180) + (pt.y - center.y) * math.cos(72.0 * math.pi/180)); return new point(x,y); } 这样画出来的五角星是中间有五条线的,如果你想画的是中间没有五条线,看看上面的代码自己就可以搞定了。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
汽车镀晶属于保险公司赔吗
刘记酒行在什么地方啊,我要过去处理事情
在淘宝开一家玩具网店要交多少保证金?
好友过生日送什么水果
中国移动97年的手机号码13907++9888价值多少
玖信车贷业务加盟电话是多少!
滕州火车站到山西晋城火车站时刻表
甘肃银行徽县支行怎么去啊,有知道地址的么
为什么以前没有梨涡 今天照镜子发现现在嘴角
浙江邮电职业技术学院住宿条件怎么样?还有大
大铁450*630线切割机器一个小时用多少电
快乐棋牌室地址在哪,我要去那里办事
美国的范德堡大学与莱斯大学,哪个的商科更好
12+23-34+45-56+67-78+89-78+67-56+45-34+23+
oppofind7充电器电压5.03伏特电池电压4.37是
推荐资讯
中国邮政储蓄银行(玛尼罕乡营业所)地址好找么
民富路我想知道这个在什么地方
江夏张焰清中医内科诊所在哪里啊,我有事要去
大海烟杂店我想知道这个在什么地方
QQ飞车手游霸天虎怎么样 霸天虎性能属性
我有三个1元长城一硬币1个能直多少钱81年的
香满园白族风味我想知道这个在什么地方
知味轩在什么地方啊,我要过去处理事情
近视五百度不带眼镜有什么坏处
警察异地传唤问题
求电气控制方法: 有两处信号4~20mA,如何同
目前小米5高配和小米5s 3+32g的哪个更值得买
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?