有大神给编个代码吗 求实现 有注释最好 谢谢了!
要求画任意多边形 然后输入A B 出来后面结果C#gis缓冲区角平分线算法
解决方案 »
- 图片字节流
- QQ 发送信息
- Winform中如何限制textBox文本框只能输入1-1000的整数
- C#中, 如何设置AxSpreadSheet控件某单元格的颜色啊?
- 怎么样做带升级的windows应用程序.
- 请问各位怎么在两个自窗体间拖动控件啊?急
- 如何避免timer不会在同一时间多次执行函数?
- 请高手帮帮忙,我在中文环境下做的系统,到日文下全是乱麻,怎么解决阿?
- winform 上有2个 panel 在一个 panel 上动态增加多个 pictureBox 怎么能让这些 pictureBox 相应 OnKeyDown?
- 一个ado.net相关的问题,向高手请教,百分相送!在线等!!
- 求教,一个字符串生成二维数组的方法,急,谢谢!
- 求U盘误删恢复软件的工作原理
/// 获取中心点坐标
/// </summary>
/// <param name="p"></param>
/// <returns></returns>
public Point GetCenterPoint(Point[] p)
{ Point ptCenter = new Point(0, 0);
int i, j;
double ai, atmp = 0, xtmp = 0, ytmp = 0;
if (p == null)
throw new ArgumentNullException("获取多边形中心点坐标时传入的参数为空。");
if(p.Length == 1)
return p[0];
if ((p.Length == 2) || (p.Length == 3 && p[0] == p[2]))
return new PointDD((p[1].X + p[0].X) / 2, (p[1].Y + p[0].Y) / 2); int n = p.Length;
for (i = n - 1, j = 0; j < n; i = j, j++)
{
ai = p[i].X * p[j].Y - p[j].X * p[i].Y;
atmp += ai;
xtmp += (p[j].X + p[i].X) * ai;
ytmp += (p[j].Y + p[i].Y) * ai;
} if (atmp != 0)
{
ptCenter.X = Convert.ToInt32(xtmp / (3 * atmp));
ptCenter.Y = Convert.ToInt32(ytmp / (3 * atmp)); }
return ptCenter; }然后以中心点为坐标原点,其他各点与中心点根据三角函数求比例就不用我写了吧
这是我以前求gis里大地中心坐标的,PointDD当时定义的大地坐标点,上面没全改过来,你都改成Point就可以了