C# .net GDI+ 绘图问题
for (int i = 0; i < 49; i++)
{
starsum[i, 0].X = rnd.Next(0, this.Width);
starsum[i, 0].Y = rnd.Next(0, this.Height);//确定各个多边形(星星)的位置
starsum[i, 1].X = starsum[i, 0].X - 1;
starsum[i, 1].Y = starsum[i, 0].Y + 2;
starsum[i, 2].X = starsum[i, 0].X - 2;
starsum[i, 2].Y = starsum[i, 0].Y + 3;
starsum[i, 3].X = starsum[i, 0].X - 1;
starsum[i, 3].Y = starsum[i, 0].Y + 4;
starsum[i, 4].X = starsum[i, 0].X;
starsum[i, 4].Y = starsum[i, 0].Y + 6;
starsum[i, 5].X = starsum[i, 0].X + 1;
starsum[i, 5].Y = starsum[i, 0].Y + 4;
starsum[i, 6].X = starsum[i, 0].X + 2;
starsum[i, 6].Y = starsum[i, 0].Y + 3;
starsum[i, 7].X = starsum[i, 0].X + 1;
starsum[i, 7].Y = starsum[i, 0].Y + 2;
}
//已经定义了名为g2 的画布
for(int i = 0; i < 49; i++)
{
g2.FillPolygon(p3, starsum[i], FillMode.Winding);
//这边第二个参数报错说不能有Point转换到PointF
}
难道不能这样话多边形吗?求高手,求一个画星星的方法(PS 星星位置要固定不变) 展开
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[,] starsum = new PointF[50,8];
另外,最后一行里面的starsum 使用不正确吧?它是个二维数组,你却当成一维来用,会出错的:
for(int i = 0; i < 49; i++)
{
g2.FillPolygon(p3, starsum[i] /* <----这里 */, FillMode.Winding);
}