问题描述
下面这是从网上下的一个画立体球形的类,请教如何能为他贴图或添加色彩,谢谢!!!publicclassSphere{publicGeometry.Point[,]points;intm_Lat;intm_Lon;publicSphere(intm,intn){m_Lat=m;m_Lon=n;doubledi=(Math.PI*2.0)/(double)m;doubledt=(Math.PI*2.0)/(double)n;points=newGeometry.Point[m,n];doubleai=0;for(inti=0;i<m;i++){doubleat=0;for(intj=0;j<n;j++){doublex=Math.Sin(ai)*Math.Cos(at);doubley=Math.Sin(ai)*Math.Sin(at);doublez=Math.Cos(ai);points[i,j]=newPoint(x,y,z);at+=dt;}ai+=di;}}publicvoidScale(doublescale){for(inti=0;i<m_Lat;i++){for(intj=0;j<m_Lon;j++){points[i,j]=newPoint(points[i,j].x*scale,points[i,j].y*scale,points[i,j].z*scale);}}}publicvoidTranslate(Vectortranslate){for(inti=0;i<m_Lat;i++){for(intj=0;j<m_Lon;j++){points[i,j]=newPoint(points[i,j].x+translate.x,points[i,j].y+translate.y,points[i,j].z+translate.z);}}}internalvoidDraw(CameraoCamera1,System.Drawing.Graphicsg,Rectanglerect,doublefMax,Colorcolor){Penpen=newPen(color);for(inti=0;i<m_Lat;i++){for(intj=0;j<m_Lon;j++){intiplus1=i+1;if(iplus1==m_Lat)iplus1=0;intjplus1=j+1;if(jplus1==m_Lon)jplus1=0;Pointa=newPoint(points[i,j]);Pointb=newPoint(points[iplus1,j]);Pointc=newPoint(points[iplus1,jplus1]);Pointd=newPoint(points[i,jplus1]);Geometry.PointpointAux1=oCamera1.GetProjectedMappedPoint(a);Geometry.PointpointAux2=oCamera1.GetProjectedMappedPoint(b);Geometry.PointpointAux3=oCamera1.GetProjectedMappedPoint(c);Geometry.PointpointAux4=oCamera1.GetProjectedMappedPoint(d);if(pointAux1!=null&&pointAux2!=null&&pointAux3!=null&&pointAux4!=null){doublex1=rtPoint.GetCoord(-fMax,fMax,rect.Left,rect.Right,pointAux1.x);doubley1=rtPoint.GetCoord(-fMax,fMax,rect.Left,rect.Right,pointAux1.y);doublex2=rtPoint.GetCoord(-fMax,fMax,rect.Left,rect.Right,pointAux2.x);doubley2=rtPoint.GetCoord(-fMax,fMax,rect.Left,rect.Right,pointAux2.y);doublex3=rtPoint.GetCoord(-fMax,fMax,rect.Left,rect.Right,pointAux3.x);doubley3=rtPoint.GetCoord(-fMax,fMax,rect.Left,rect.Right,pointAux3.y);doublex4=rtPoint.GetCoord(-fMax,fMax,rect.Left,rect.Right,pointAux4.x);doubley4=rtPoint.GetCoord(-fMax,fMax,rect.Left,rect.Right,pointAux4.y);g.DrawLine(pen,(int)x1,(int)y1,(int)x2,(int)y2);g.DrawLine(pen,(int)x2,(int)y2,(int)x3,(int)y3);g.DrawLine(pen,(int)x3,(int)y3,(int)x4,(int)y4);g.DrawLine(pen,(int)x4,(int)y4,(int)x1,(int)y1);}}}pen.Dispose();}
解决方案
解决方案二:
fillrectangle
解决方案三:
谢谢!!!wawd74520:能否告知fillrectangle该添加何处吗,如何添加,我是一名刚从vb.net转向c#的菜鸟,谢谢!!!
解决方案四:
你92-95为什么是画四条线,而不是画四边形呢?四边形不就可以充填了吗?