c#中FillPolygon有四个重载函数,
FillPolygon(Brush, Point[]) 填充 Point 结构指定的点数组所定义的多边形的内部。
FillPolygon(Brush, PointF[]) 填充 PointF 结构指定的点数组所定义的多边形的内部。
FillPolygon(Brush,Point[]) ,FillMode) 使用指定的填充模式填充 Point 结构指定的点数组所定义的多边形的内部。
FillPolygon(Brush, PointF[], FillMode) 使用指定的填充模式填充 Point 结构指定的点数组所定义的多边形的内部。
就类型来看LZ无论用Point或者PointF都没问题,问题出在第二个参数为Point[]而楼主给的参数是一个之给定了一个边界的二位数组,所以肯定要出错的,我不知道楼主要什么结果,这里我给出一种解决方法,希望能够启发你达到自己的目的:(只改输出部分)
for (int i = 0; i < 49; i++)
{
Point[] temp=new Point[8];
for(int j=0;j<8;j++)
temp[j]= starsum[i,j];
g2.FillPolygon(p3, temp, FillMode.Winding);
//这里temp是一个Point[]类型的变量了 }
我自己测试的结果好像lz要画彗星啊,哈哈哈我自学的是vc++
不过c#比起c++好接受,我第一次用c#看了会儿MSDN给出来的解答,希望不会差太多,祝楼主学习愉快
改成PointF就行了:
PointF[,] starsum = new PointF[50,8];
另外,最后一行里面的starsum 使用不正确吧?它是个二维数组,你却当成一维来用,会出错的:
for(int i = 0; i < 49; i++)
{
g2.FillPolygon(p3, starsum[i] /* <----这里 */, FillMode.Winding);
}