日期:2014-05-19  浏览次数:20788 次

高分求:如何在winform指定区域用一组坐标画多边形的C# 实现方法!
用一组二维x,y坐标,求在form1中某个区域内,用给出的坐标画出多边形的C#实现方法.不能使用第三方组件,用GDI.

------解决方案--------------------
.NET Framework 类库

Graphics.DrawPolygon 方法 (Pen, Point[])

绘制由一组 Point 结构定义的多边形。

命名空间:System.Drawing
程序集:System.Drawing(在 system.drawing.dll 中)

参数
pen
Pen,它确定多边形的颜色、宽度和样式。

points
Point 结构数组,这些结构表示多边形的顶点。
数组中的每对相邻的两个点指定多边形的一条边。另外,如果数组的最后一个点和第一个点不重合,则这两个点指定多边形的最后一条边。


下面的代码示例设计用于 Windows 窗体,它需要 PaintEventArgse(这是 Paint 事件处理程序的参数)。代码执行下列操作:

创建黑色钢笔。

创建一个数组,该数组由表示多边形顶点的七个点组成。

将该多边形绘制到屏幕。

public void DrawPolygonPoint(PaintEventArgs e)
{

// Create pen.
Pen blackPen = new Pen(Color.Black, 3);

// Create points that define polygon.
Point point1 = new Point(50, 50);
Point point2 = new Point(100, 25);
Point point3 = new Point(200, 5);
Point point4 = new Point(250, 50);
Point point5 = new Point(300, 100);
Point point6 = new Point(350, 200);
Point point7 = new Point(250, 250);
Point[] curvePoints =
{
point1,
point2,
point3,
point4,
point5,
point6,
point7
};

// Draw polygon to screen.
e.Graphics.DrawPolygon(blackPen, curvePoints);
}
------解决方案--------------------
一是取PictureBox的客户区大小,然后计算坐标转换
需要注意的是的逻辑坐标与绘图坐标是不同的
将 x - > gx y - > gy
二是取PictureBox的CreateGraphics创建绘图板
用Graphics对象的DrawPolygon绘制多边形
释放Graphics对象
三如果你需要保存该多边形,可能需要考虑重绘,那就需要用链表之类的来保存该
数据。