永发信息网

c# 直径转换圆形上的点的函数

答案:2  悬赏:50  手机版
解决时间 2021-04-14 07:35

该方法获得2个point(此2个point组成原的直径), 以及一个int数量(此数量必须为大于12的能被4整除的数) 然后返回一个point数组或者IList<point>

返回的值具备以下条件其所有的point都在圆的边上,如果传递的参数为12,那么返回12个点,由12个点依次连线得到一个近似于原的一个多边形

public IList<point> getList(point x, point y, int num)

{

return null;

}

最佳答案

private void button2_Click(object sender, EventArgs e)
{
Point p1 = new Point(150, 100);
Point p2 = new Point(100, 200);


GetPointList(p1, p2, 24);
}


public Point[] GetPointList(Point p1, Point p2, int num)
{
Graphics g = Graphics.FromHwnd(panel1.Handle);
Pen penLine = new Pen(SystemBrushes.ActiveCaption);
g.DrawLine(penLine,p1,p2);
Pen penBorder = new Pen(SystemBrushes.GrayText);


// 取中心点
int centerX = Math.Min(p1.X, p2.X) + Math.Abs(p2.X - p1.X) / 2;
int centery = Math.Min(p1.Y, p2.Y) + Math.Abs(p2.Y - p1.Y) / 2;


// 直径
double doubleR = Math.Sqrt((p2.X - p1.X) * (p2.X - p1.X) + (p2.Y - p1.Y) * (p2.Y - p1.Y));
// 半径
double doubler = doubleR/2;
int intr = Convert.ToInt32(doubler);


double single = (Math.PI / 180) * (360 / num);

Point pointCenter = new Point(centerX,centery);
Point[] point = new Point[num];


for (int i = 1; i <= num; i++)
{
point[i - 1] = new Point(
centerX - (int)(intr * Math.Sin(single * i))
, centery - (int)(intr * Math.Cos(single * i)));


g.DrawLine(penBorder
, pointCenter
, point[i - 1]);
}



return point;
}

全部回答
不错啊,正是采用SMalls的写法,路过看看。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
寻求DNF战斗法师加点?
下列叙述正确的是A.水由氢原子和氧原子构成B.
衣服有黑点点怎么办?
众泰t600s四驱suv越野车多少车价
沙湾县教育局委员会地址有知道的么?有点事想
求宣言!!!关于初三十班的口号,要中考了,
梦幻龙鳞多少钱
员工活动室文化标语,旅游景区荣誉室以及职工
长用发蜡有什么害处?
平安为什么光头
如图所示的实验器材,请利用其中一种或多种器
人一生中要走几条路?
请问DNF35级的传承短剑多少钱?
班级聚餐很团结很开心,怎么用优美的句子表达
How to kill youself without pain?
推荐资讯
如图,若△ABC≌△A1B1C1,且∠A=110°,∠B=
数码相机退货问题
臻美小铺在什么地方啊,我要过去处理事情
QQ校友 自己创建班级 要申请几天
下列一则招聘启事中存在3处毛病,请修改。(1
问一首歌的名
淘宝买东西操作规程!急求!
超级QQ种花比普通QQ种花快吗,快在哪里
单选题适应场地和模拟比赛坏境,是许多运动队
115. The conductor felt terrible on the wa
浙江丽水到江西宜春要多久?多少车费?给个简
你好,怎么看网球拍型号
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?