C# graphics polygon 画三角形

今天下午在写一个小项目,要画一个三角形,但是vs中并没有这样一个函数可以用来调用来直接输入三点然后画出一个三角形,

或许是微软的程序员们觉得这个太简单了吧,这个小函数都不值得添到函数库中。


弄了几个小时,总结出三个方法:

1.如果不需要填充的话,那么直接用drawline画三条直线,首尾相接即可,代码如下:

g.DrawLine(pBlue, NodeMngt.nodes[i].GetX() - 2, NodeMngt.nodes[i].GetY() - 2, NodeMngt.nodes[i].GetX() + 3, NodeMngt.nodes[i].GetY() + 3);

g.DrawLine(pBlue, NodeMngt.nodes[i].GetX() - 3, NodeMngt.nodes[i].GetY() + 3, NodeMngt.nodes[i].GetX() + 3, NodeMngt.nodes[i].GetY() + 3);
g.DrawLine(pBlue, NodeMngt.nodes[i].GetX() - 2, NodeMngt.nodes[i].GetY() - 2, NodeMngt.nodes[i].GetX() - 3, NodeMngt.nodes[i].GetY() + 3);


pBlue是画笔,pen来定义

但是这样子,画出来的三角形是空心的,如果需要实心的,并且调用brush刷子,那么请看下面两种方法


2.用polygon函数,但是得先给定其point点,在这里point只能定义为整型,如果是float或者double则没有办法了,所以先可以强制将其转化为

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C# ArcGIS中,可以通过以下步骤添加多边形的内外环: 1. 创建一个多边形对象和一个点集合对象,用于存储多边形的坐标点和内外环的坐标点。 ```csharp IPolygon polygon = new PolygonClass(); IPointCollection points = polygon as IPointCollection; IGeometryCollection rings = polygon as IGeometryCollection; ``` 2. 添加外环的坐标点到点集合对象中。 ```csharp IPoint point1 = new PointClass(); point1.PutCoords(0, 0); points.AddPoint(point1); IPoint point2 = new PointClass(); point2.PutCoords(0, 10); points.AddPoint(point2); IPoint point3 = new PointClass(); point3.PutCoords(10, 10); points.AddPoint(point3); IPoint point4 = new PointClass(); point4.PutCoords(10, 0); points.AddPoint(point4); points.AddPoint(point1); // 添加起点,形成闭合的多边形 ``` 3. 创建一个新的环对象,用于存储内环的坐标点。 ```csharp IRing innerRing = new RingClass(); IPointCollection innerPoints = innerRing as IPointCollection; ``` 4. 添加内环的坐标点到点集合对象中。 ```csharp IPoint innerPoint1 = new PointClass(); innerPoint1.PutCoords(2, 2); innerPoints.AddPoint(innerPoint1); IPoint innerPoint2 = new PointClass(); innerPoint2.PutCoords(2, 8); innerPoints.AddPoint(innerPoint2); IPoint innerPoint3 = new PointClass(); innerPoint3.PutCoords(8, 8); innerPoints.AddPoint(innerPoint3); IPoint innerPoint4 = new PointClass(); innerPoint4.PutCoords(8, 2); innerPoints.AddPoint(innerPoint4); innerPoints.AddPoint(innerPoint1); // 添加起点,形成闭合的内环 ``` 5. 将内环对象添加到环集合对象中。 ```csharp rings.AddGeometry(innerRing); ``` 完整代码如下: ```csharp IPolygon polygon = new PolygonClass(); IPointCollection points = polygon as IPointCollection; IGeometryCollection rings = polygon as IGeometryCollection; // 添加外环的坐标点 IPoint point1 = new PointClass(); point1.PutCoords(0, 0); points.AddPoint(point1); IPoint point2 = new PointClass(); point2.PutCoords(0, 10); points.AddPoint(point2); IPoint point3 = new PointClass(); point3.PutCoords(10, 10);points.AddPoint(point3); IPoint point4 = new PointClass(); point4.PutCoords(10, 0); points.AddPoint(point4); points.AddPoint(point1); // 添加起点,形成闭合的多边形 // 添加内环的坐标点 IRing innerRing = new RingClass(); IPointCollection innerPoints = innerRing as IPointCollection; IPoint innerPoint1 = new PointClass(); innerPoint1.PutCoords(2, 2); innerPoints.AddPoint(innerPoint1); IPoint innerPoint2 = new PointClass(); innerPoint2.PutCoords(2, 8); innerPoints.AddPoint(innerPoint2); IPoint innerPoint3 = new PointClass(); innerPoint3.PutCoords(8, 8); innerPoints.AddPoint(innerPoint3); IPoint innerPoint4 = new PointClass(); innerPoint4.PutCoords(8, 2); innerPoints.AddPoint(innerPoint4); innerPoints.AddPoint(innerPoint1); // 添加起点,形成闭合的内环 // 将内环对象添加到环集合对象中 rings.AddGeometry(innerRing); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值