⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.cs

📁 这是《C#图形程序设计》这本书的源代码
💻 CS
📖 第 1 页 / 共 3 页
字号:
				x=ax[nn+1];
				y=ay[nn+1];
				gx=(int)(cx+x);
				gy=(int)(cy+y);
				if(flag!=1)
				{
					p1.X=gx;
					p1.Y=gy;
					flag=1;
				}
				else
				{
					p2.X=gx;
					p2.Y=gy;
					g.DrawLine(pen1,p1,p2);
					p1=p2;
				}
				x=bx[nn+1];
				y=by[nn+1];
				gx=(int)(cx+x);
				gy=(int)(cy+y);
				if(flag!=1)
				{
					p1.X=gx;
					p1.Y=gy;
					flag=1;
				}
				else
				{
					p2.X=gx;
					p2.Y=gy;
					g.DrawLine(pen1,p1,p2);
					p1=p2;
				}
				x=bx[nn];
				y=by[nn];
				gx=(int)(cx+x);
				gy=(int)(cy+y);
				if(flag!=1)
				{
					p1.X=gx;
					p1.Y=gy;
					flag=1;
				}
				else
				{
					p2.X=gx;
					p2.Y=gy;
					g.DrawLine(pen1,p1,p2);
					p1=p2;
				}
			}
		}

		private void menuItem14_Click(object sender, System.EventArgs e)
		{
			Graphics g=pictureBox1.CreateGraphics();
			Pen pen1=new Pen(Color.Blue);
			g.Clear(this.BackColor);
			int flag,r,h,n,nn,gx,gy,ed,eh,od,ps;
			double pi,x,y,z,cx,cy,thx,thy,th;
			double xw,yw,zw;
			double[] ax=new double[9];
			double[] ay=new double[9];
			double[] az=new double[9];
			double[] bx=new double[9];
			double[] by=new double[9];
			double[] bz=new double[9];
			ed=1000;eh=100;od=0;
			pi=3.14159;
			cx=200;
			cy=140;ps=1;
			h=80;
			thy=1.5;
			nn=1;
			r=100;
			n=4;
			thx=1.0;
			flag=0;
			for(th=0;th<=2*pi+0.1;th+=2*pi/n)
			{
				x=r*Math.Cos(th);
				y=h;
				z=r*Math.Sin(th);
				zw=z;
				xw=x;
				x=zw*Math.Cos(thy)-xw*Math.Sin(thy);
				z=zw*Math.Sin(thy)+xw*Math.Cos(thy);
				yw=y;
				zw=z;
				y=yw*Math.Cos(thx)-zw*Math.Sin(thx);
				z=yw*Math.Sin(thx)+zw*Math.Cos(thx);
				if(ps==1)
				{
					x=x*ed/(ed-od-z);
					y=(y*ed-eh*(od+z))/(ed-od-z);
				}
				ax[nn]=x;
				ay[nn]=y;
				az[nn]=z;
				nn=nn+1;
			}
			x=0;y=h;z=0;
			zw=z;
			xw=x;
			x=zw*Math.Cos(thy)-xw*Math.Sin(thy);
			z=zw*Math.Sin(thy)+xw*Math.Cos(thy);
			yw=y;
			zw=z;
			y=yw*Math.Cos(thx)-zw*Math.Sin(thx);
			z=yw*Math.Sin(thx)+zw*Math.Cos(thx);
			if(ps==1)
			{
				x=x*ed/(ed-od-z);
				y=(y*ed-eh*(od+z))/(ed-od-z);
			}
			ax[0]=x;
			ay[0]=y;
			az[0]=z;
			nn=1;
			
			for(th=0;th<=2*pi+0.1;th+=2*pi/n)
			{
				x=r*Math.Cos(th);
				y=-h;
				z=r*Math.Sin(th);
				zw=z;
				xw=x;
				x=zw*Math.Cos(thy)-xw*Math.Sin(thy);
				z=zw*Math.Sin(thy)+xw*Math.Cos(thy);
				yw=y;
				zw=z;
				y=yw*Math.Cos(thx)-zw*Math.Sin(thx);
				z=yw*Math.Sin(thx)+zw*Math.Cos(thx);
				if(ps==1)
				{
					x=x*ed/(ed-od-z);
					y=(y*ed-eh*(od+z))/(ed-od-z);
				}
				bx[nn]=x;
				by[nn]=y;
				bz[nn]=z;
				nn=nn+1;
			}
			x=0;y=-h;z=0;
			zw=z;
			xw=x;
			x=zw*Math.Cos(thy)-xw*Math.Sin(thy);
			z=zw*Math.Sin(thy)+xw*Math.Cos(thy);
			yw=y;
			zw=z;
			y=yw*Math.Cos(thx)-zw*Math.Sin(thx);
			z=yw*Math.Sin(thx)+zw*Math.Cos(thx);
			if(ps==1)
			{
				x=x*ed/(ed-od-z);
				y=(y*ed-eh*(od+z))/(ed-od-z);
			}
			for(nn=1;nn<=n;nn++)
			{
				flag=0;
				x=ax[nn];
				y=ay[nn];
				gx=(int)(cx+x);
				gy=(int)(cy+y);
				if(flag!=1)
				{
					p1.X=gx;
					p1.Y=gy;
					flag=1;
				}
				else
				{
					p2.X=gx;
					p2.Y=gy;
					g.DrawLine(pen1,p1,p2);
					p1=p2;
				}
				x=ax[nn+1];
				y=ay[nn+1];
				gx=(int)(cx+x);
				gy=(int)(cy+y);
				if(flag!=1)
				{
					p1.X=gx;
					p1.Y=gy;
					flag=1;
				}
				else
				{
					p2.X=gx;
					p2.Y=gy;
					g.DrawLine(pen1,p1,p2);
					p1=p2;
				}
				x=bx[nn+1];
				y=by[nn+1];
				gx=(int)(cx+x);
				gy=(int)(cy+y);
				if(flag!=1)
				{
					p1.X=gx;
					p1.Y=gy;
					flag=1;
				}
				else
				{
					p2.X=gx;
					p2.Y=gy;
					g.DrawLine(pen1,p1,p2);
					p1=p2;
				}
				x=bx[nn];
				y=by[nn];
				gx=(int)(cx+x);
				gy=(int)(cy+y);
				if(flag!=1)
				{
					p1.X=gx;
					p1.Y=gy;
					flag=1;
				}
				else
				{
					p2.X=gx;
					p2.Y=gy;
					g.DrawLine(pen1,p1,p2);
					p1=p2;
				}
			}
		}

		private void menuItem15_Click(object sender, System.EventArgs e)
		{
			Graphics g=pictureBox1.CreateGraphics();
			Pen pen1=new Pen(Color.Blue);
			g.Clear(this.BackColor);
			Pen pen2=new Pen(Color.Blue);
			int flag,k1,k2,r1,r2,n,d,m,p;
			int xs1,xs2,xs3,xs4,ys1,ys2,ys3,ys4,i,j,lastp;
			double x,y,z,thx,th1,th3,yw,zw,xw,thy,th2;
			double PI,ed,od,eh,zzw,ppw;
			double[,] xs=new double[150,117];
			double[,] ys=new double[150,117];
			double[,] zs=new double[150,117];
			double[,] zc=new double[150,117];
			double x1,y1;
			int[] zz=new int[1000];
			int[] pp=new int[850];
			r1=100;r2=40;k1=20;k2=16;
			ed=1500;eh=0;od=0;
			n=0;PI=3.14159;
			th3=1;thx=0.9;
			for(d=-1;d<=1;d+=2)
			{
				for(th1=0;th1<=2*PI+0.1;th1+=2*PI/k1)
				{
					n=n+1;
					m=0;
					for(th2=0;th2<=2*PI+0.1;th2+=2*PI/k2)
					{
						m=m+1;
						x=r1+r2*Math.Cos(th2);
						y=r2*Math.Sin(th2);
						z=0;
						thy=th1;
						zw=z;
						xw=x;
						x=zw*Math.Cos(thy)-xw*Math.Sin(thy);
						z=zw*Math.Sin(thy)+xw*Math.Cos(thy);
						x=x+r1/2*d;
						if(d==1)
						{
							yw=y;
							zw=z;
							y=yw*Math.Cos(PI/2)-zw*Math.Sin(PI/2);
							z=yw*Math.Sin(PI/2)+zw*Math.Cos(PI/2);
						}
						thy=th3;
						zw=z;
						xw=x;
						x=zw*Math.Cos(thy)-xw*Math.Sin(thy);
						z=zw*Math.Sin(thy)+xw*Math.Cos(thy);
						yw=y;
						zw=z;
						y=yw*Math.Cos(thx)-zw*Math.Sin(thx);
						z=yw*Math.Sin(thx)+zw*Math.Cos(thx);
						x=x*ed/(ed-od-z);
						y=(y*ed-eh*(od+z))/(ed-od-z);
						xs[n,m]=x;
						ys[n,m]=y;
						zs[n,m]=z;
					}
					flag=0;
				}
				flag=0;
			}
			p=0;
			for(n=1;n<=k1*2+1;n+=1)
			{
				for(m=1;m<=k2;m+=1)
				{
					zc[n,m]=(int)((zs[n,m]+zs[n+1,m+1])/2);
					zz[p]=(int)zc[n,m];
					pp[p]=p;
					p=p+1;
				}
			}
			lastp=p-1;
			for(i=2;i<=lastp;i+=1)
			{
				for(j=i-1;j>=0;j+=-1)
				{
					if(zz[j]>zz[j+1])
					{
						zzw=zz[j];
						zz[j]=zz[j+1];
						zz[j+1]=(int)zzw;
						ppw=pp[j];
						pp[j]=pp[j+1];
						pp[j+1]=(int)ppw;
					}
				}
			}
			for(p=0;p<=lastp;p+=1)
			{
				n=(int)(pp[p]/k2)+1;
				m=pp[p]%k2+1;
				if(n!=(k1+1))
				{
					xs1=(int)(xs[n,m]); ys1=(int)(ys[n,m]);
					xs2=(int)(xs[n+1,m]);ys2=(int)(ys[n+1,m]);
					xs3=(int)(xs[n+1,m+1]);ys3=(int)(ys[n+1,m+1]);
					xs4=(int)(xs[n,m+1]);ys4=(int)(ys[n,m+1]);
					if(Math.Abs(ys1*(xs2-xs3)+ys2*(xs3-xs1)+ys3*(xs1-xs2))>80)
					{
						g.DrawLine(pen1,xs1+320,ys1+200,xs2+320,ys2+200);
						g.DrawLine(pen1,xs2+320,ys2+200,xs3+320,ys3+200);
						Brush sp=new SolidBrush(Color.Red);
						Point[] p1=new Point[]
							{
							new Point(xs1+320,ys1+200),
							new Point(xs2+320,ys2+200),
							new Point(xs2+320,ys2+200),
							new Point(xs3+320,ys3+200)
							};
						g.FillClosedCurve(sp,p1);
						g.DrawLine(pen1,xs3+320,ys3+200,xs4+320,ys4+200);
						g.DrawLine(pen1,xs4+320,ys4+200,xs1+320,ys1+200);
						Point[] p2=new Point[]
							{
								new Point(xs3+320,ys3+200),
								new Point(xs4+320,ys4+200),
								new Point(xs4+320,ys4+200),
								new Point(xs1+320,ys1+200)
							};
						g.FillClosedCurve(sp,p2);
						x=(xs[n,m]+xs[n+1,m+1])/2;
						y=(ys[n,m]+ys[n+1,m+1])/2;
						x1=(int)(x+320);
						y1=(int)(y+200);
					}
					g.DrawLine(pen2,xs1+320,ys1+200,xs2+320,ys2+200);
					g.DrawLine(pen2,xs2+320,ys2+200,xs3+320,ys3+200);
					g.DrawLine(pen2,xs3+320,ys3+200,xs4+320,ys4+200);
					g.DrawLine(pen2,xs4+320,ys4+200,xs1+320,ys1+200);
				}
			}
		}

		private void menuItem16_Click(object sender, System.EventArgs e)
		{
			Graphics g=pictureBox1.CreateGraphics();
			Pen pen1=new Pen(Color.Blue);
			int[] mx=new int[100];
			int[] my=new int[100];
			int[] px=new int[100];
			int[] py=new int[100];
			int i=1,r=100;
			double pi=3.14159;
			double s=pi/9,q,p,x,y,z;
			g.Clear(this.BackColor);
			q=-pi/2;
			for(p=0;p<=2*pi;p+=pi/24)
			{
				x=r*Math.Cos(q)*Math.Sin(p);
				y=r*Math.Sin(q);
				z=r*Math.Cos(q)*Math.Cos(p);
				px[i]=(int)(x*1.4+200);
				py[i]=(int)(140-y+z*Math.Sin(s));
				mx[i]=px[i];
				my[i]=py[i];
				i++;
			}
			for(q=-pi/2+pi/24;q<=pi/2;q+=pi/24)
			{
				i=1;
				for(p=0;p<=2*pi;p+=pi/24)
				{
					x=r*Math.Cos(q)*Math.Sin(p);
					y=r*Math.Sin(q);
					z=r*Math.Cos(q)*Math.Cos(p);
					px[i]=(int)(x*1.4+200f);
					py[i]=(int)(140f-y+z*Math.Sin(s));
					if(i==1)
					{
						goto l1;
					}
					if(r*Math.Sin(q)*Math.Tan(-s)>z)goto l2;
					g.DrawLine(pen1,px[i-1],py[i-1],px[i],py[i]);
				l1:
					g.DrawLine(pen1,mx[i],my[i],px[i],py[i]);
				l2:
					mx[i]=px[i];
					my[i]=py[i];
					i++;
				}
			}
			g.DrawLine(pen1,px[1],py[1],px[i-1],py[i-1]);
		}

		private void menuItem17_Click(object sender, System.EventArgs e)
		{
			Graphics g=pictureBox1.CreateGraphics();
			Pen pen1=new Pen(Color.Blue);
			g.Clear(this.BackColor);
			int flag,s,m,r,xx,zz,gx,gy;
			double x,y,z,cx,cy,thx,ths,thy,th,th2;
			double PI,ed,od,eh,zw,ss,xw,yw;
			int[] min=new int[1640];
			int[] max=new int[1640];
			cx=250;cy=270;
			thx=0.75;PI=3.1416;
			for(m=0;m<=640;m++)
			{
				min[m]=320;max[m]=-320;
			}
			ed=1000;eh=0;
			od=-180;ths=-PI/2*3;
			s=4;ss=3*PI/400*s;
			r=70;thy=0.9;th2=ths;
			flag=0;
			int mgx=0,mgy=0;
			for(zz=200;zz>=-200;zz=zz-s)
			{
				flag=0;th=ths;
				for(xx=-200;xx<=200;xx=xx+s/2)
				{
					x=xx;
					z=zz;
					y=r*(Math.Cos(th)+Math.Cos(th)*Math.Cos(th2)+Math.Cos(th2));
					zw=z;
					xw=x;
					x=zw*Math.Cos(thy)-xw*Math.Sin(thy);
					z=zw*Math.Sin(thy)+xw*Math.Cos(thy);
					yw=y;
					zw=z;
					y=yw*Math.Cos(thx)-zw*Math.Sin(thx);
					z=yw*Math.Sin(thx)+zw*Math.Cos(thx);
					x=x*ed/(ed-od-z);
					y=(y*ed-eh*(od+z))/(ed-od-z);
					gx=(int)(cx+x+0.5);
					gy=(int)(cy+y+0.5);
					if(gy<=min[gx+320]||gy>=max[gx+320])
					{
						if(flag==1)
						{
							g.DrawLine(pen1,mgx,mgy,gx,gy);
						}
						mgx=gx;mgy=gy;
						if(gy<min[gx+320])min[gx+320]=gy;
						if(gy>max[gx+320])max[gx+320]=gy;
						flag=1;
					}
					else
					{
						flag=0;
					}
					th=th+ss/2;
				}
				th2=th2+ss;
			}
		}

		private void menuItem18_Click(object sender, System.EventArgs e)
		{
			int flag,r,h,n,nn,gx,gy,hl;
			double pi,x,y,z,cx,cy,thx,thy,th;
			double xw,yw,zw;
			PointF p1=new Point();
			PointF p2=new Point();
			double[] ax=new double[9];
			double[] ay=new double[9];
			double[] az=new double[9];
			double[] bx=new double[9];
			double[] by=new double[9];
			double[] bz=new double[9];
			pi=3.14159;
			cx=220;
			Graphics g=pictureBox1.CreateGraphics();
			Pen pen1=new Pen(Color.Blue,1);
			g.Clear(this.BackColor);
			cy=180;
			h=80;
			thy=0.2;
			nn=1;
			r=100;
			n=4;
			thx=0.4;hl=1;
			flag=0;
			for(th=0;th<=2*pi+0.1;th+=2*pi/n)
			{
				x=r*Math.Cos(th);
				y=h;
				z=r*Math.Sin(th);
				zw=z;
				xw=x;
				x=zw*Math.Cos(thy)-xw*Math.Sin(thy);
				z=zw*Math.Sin(thy)+xw*Math.Cos(thy);
				yw=y;
				zw=z;
				y=yw*Math.Cos(thx)-zw*Math.Sin(thx);
				z=yw*Math.Sin(thx)+zw*Math.Cos(thx);
				ax[nn]=x;
				ay[nn]=y;
				az[nn]=z;
				nn=nn+1;
			}
			x=0;y=h;z=0;
			zw=z;
			xw=x;
			x=zw*Math.Cos(thy)-xw*Math.Sin(thy);
			z=zw*Math.Sin(thy)+xw*Math.Cos(thy);
			yw=y;
			zw=z;
			y=yw*Math.Cos(thx)-zw*Math.Sin(thx);
			z=yw*Math.Sin(thx)+zw*Math.Cos(thx);
			
			ax[0]=x;
			ay[0]=y;
			az[0]=z;
			flag=0;
			nn=1;
			
			for(th=0;th<=2*pi+0.1;th+=2*pi/n)
			{
				x=r*Math.Cos(th);
				y=-h;
				z=r*Math.Sin(th);
				zw=z;
				xw=x;
				x=zw*Math.Cos(thy)-xw*Math.Sin(thy);
				z=zw*Math.Sin(thy)+xw*Math.Cos(thy);
				yw=y;
				zw=z;
				y=yw*Math.Cos(thx)-zw*Math.Sin(thx);
				z=yw*Math.Sin(thx)+zw*Math.Cos(thx);
				bx[nn]=x;
				by[nn]=y;
				bz[nn]=z;
				nn=nn+1;
			}
			x=0;y=-h;z=0;
			zw=z;
			xw=x;
			x=zw*Math.Cos(thy)-xw*Math.Sin(thy);
			z=zw*Math.Sin(thy)+xw*Math.Cos(thy);
			yw=y;
			zw=z;
			y=yw*Math.Cos(thx)-zw*Math.Sin(thx);
			z=yw*Math.Sin(thx)+zw*Math.Cos(thx);
			bx[0]=x;by[0]=y;bz[0]=z;
			for(nn=1;nn<=n;nn++)
			{
				if((hl==0)||(az[nn]+bz[nn+1])/2>0)
				{
					flag=0;
					x=ax[nn];
					y=ay[nn];
					gx=(int)(cx+x);
					gy=(int)(cy+y);
					if(flag==0)
					{
						p1.X=gx;
						p1.Y=gy;
					}
					flag=1;
					p2.X=gx;
					p2.Y=gy;
					g.DrawLine(pen1,p1,p2);
					p1=p2;
					x=ax[nn+1];
					y=ay[nn+1];
					gx=(int)(cx+x);
					gy=(int)(cy+y);
					if(flag==0)
					{
						p1.X=gx;
						p1.Y=gy;
					}
					flag=1;
					p2.X=gx;
					p2.Y=gy;
					g.DrawLine(pen1,p1,p2);
					p1=p2;
					x=bx[nn+1];
					y=by[nn+1];
					gx=(int)(cx+x);
					gy=(int)(cy+y);
					if(flag==0)
					{
						p1.X=gx;
						p1.Y=gy;
					}
					flag=1;
					p2.X=gx;
					p2.Y=gy;
					g.DrawLine(pen1,p1,p2);
					p1=p2;
					x=bx[nn];
					y=by[nn];
					gx=(int)(cx+x);
					gy=(int)(cy+y);
					if(flag==0)
					{
						p1.X=gx;
						p1.Y=gy;
					}
					flag=1;
					p2.X=gx;
					p2.Y=gy;
					g.DrawLine(pen1,p1,p2);
					p1=p2;
					x=ax[nn];y=ay[nn];
					gx=(int)(cx+x);
					gy=(int)(cy+y);
					if(flag==0)
					{
						p1.X=gx;
						p1.Y=gy;
					}
					flag=1;
					p2.X=gx;
					p2.Y=gy;
					g.DrawLine(pen1,p1,p2);
					p1=p2;
				}
			}
			flag=0;
			for(nn=1;nn<=n+1;nn++)
			{
				if((hl==0)|(az[0]>0))
				{
					x=ax[nn];y=ay[nn];z=az[nn];
					gx=(int)(cx+x);
					gy=(int)(cy+y);
					if(flag==0)
					{
						p1.X=gx;
						p1.Y=gy;
					}
					flag=1;
					p2.X=gx;
					p2.Y=gy;
					g.DrawLine(pen1,p1,p2);
					p1=p2;
				}
			}
			flag=0;
			for(nn=1;nn<=n+1;nn++)
			{
				if((hl==0)|(bz[0]>0))
				{
					x=bx[nn];y=by[nn];z=bz[nn];
					gx=(int)(cx+x);
					gy=(int)(cy+y);
					if(flag==0)
					{
						p1.X=gx;
						p1.Y=gy;
					}
					flag=1;
					p2.X=gx;
					p2.Y=gy;
					g.DrawLine(pen1,p1,p2);
					p1=p2;
				}
			}
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -