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

📄 form1.cs

📁 这是《C#图形程序设计》这本书的源代码
💻 CS
📖 第 1 页 / 共 2 页
字号:
		}

		private void menuItem9_Click(object sender, System.EventArgs e)
		{
			Graphics g=this.CreateGraphics();
			Pen pen=new Pen(Color.Red,1);
			g.Clear(this.BackColor);
			const double pi=3.1416;
			double a,x1,x2,y1,y2;
			for(a=1.5;a<=2*pi;a+=pi/120)
			{
				x1=280+280*Math.Cos(0.25*a);
				y1=240+(30-80*Math.Sin(3*a))*Math.Cos(a/2.5);
				x2=280+280*Math.Cos(0.25*a+pi/4);
				y2=240+(30-80*Math.Sin(3*a-pi/4))*Math.Cos(a/2.5);
				g.DrawLine(pen,(int)x1,(int)y1,(int)x2,(int)y2);
			}
		}

		private void menuItem10_Click(object sender, System.EventArgs e)
		{
			Graphics g=this.CreateGraphics();
			Pen pen=new Pen(Color.Red,1);
			g.Clear(this.BackColor);
			int d,s;
			const double pi=3.1416;
			double a,x1,x2,y1,y2,l,m,o,p;
			d=150;s=50;
			for(a=0;a<=2*pi;a+=pi/120)
			{
				l=d+d/3.0*(1+1.0/2*Math.Cos(12*a))*Math.Cos(a);
				x1=250+1.25*l*Math.Cos(a);
				m=s+s/3.0*(1+1.0/2*Math.Sin(12*a))*Math.Cos(a);
				x2=250+1.25*m*Math.Cos(a);
				o=d+d/3.0*(1+1.0/2*Math.Cos(4*a))*Math.Sin(a);
				y1=250-o*Math.Sin(a);
				p=s+s/2.0*(1+1.0/2*Math.Sin(15*a))*Math.Sin(a);
				y2=250-p*Math.Sin(a);
				g.DrawLine(pen,(int)x1,(int)y1,(int)x2,(int)y2);
			}
		}

		private void menuItem11_Click(object sender, System.EventArgs e)
		{
			Graphics g=this.CreateGraphics();
			Pen pen=new Pen(Color.Red,1);
			g.Clear(this.BackColor);
		
			const double pi=3.1416;
			double a,x1,x2,y1,y2;
			for(a=1.5;a<=2*pi;a+=pi/250)
			{
				x1=220+220*Math.Cos(a);
				y1=140+(80*Math.Sin(5*a))*Math.Cos(a);
				x2=280+280*Math.Cos(a);
				y2=240+(80*Math.Sin(5*a))*Math.Cos(a);
				g.DrawLine(pen,(int)x1,(int)y1,(int)x2,(int)y2);
			}
		}

		private void menuItem12_Click(object sender, System.EventArgs e)
		{
			//编程思想:
			//直线线段的位置和长短均按三角函数规律分布,花形的角度为π/5。
			//语句s=d*(1.0+Math.Sin(4.0*a));
			//的4表示花形瓣数。
			Graphics g=this.CreateGraphics();
			Pen pen=new Pen(Color.Red,1);
			g.Clear(this.BackColor);
			const double pi=3.1416;
			double a,s,d;
			double x1,y1,x2,y2;
			d=80.0;
			for(a=0.0;a<=2*pi;a+=pi/360)
			{
				s=d*(1.0+Math.Sin(4.0*a));
				x1=220+s*Math.Cos(a);
				x2=220+s*Math.Cos(a+pi/5.0);
				y1=160-s*Math.Sin(a);
				y2=160-s*Math.Sin(a+pi/5.0);
				g.DrawLine(pen,(int)x1,(int)y1,(int)x2,(int)y2);
			}
		}

		private void menuItem13_Click(object sender, System.EventArgs e)
		{
			//编程思想:
			//在上例程序的基础上,采用较复杂的三角函数式:
			//s=d*(1.0+1.0/4*Math.Sin(12.0*a));
			//f=s*(1.0+Math.Sin(4.0*a));
			//控制画线的始点和终点坐标

			Graphics g=this.CreateGraphics();
			Pen pen=new Pen(Color.Red,1);
			g.Clear(this.BackColor);
			const double pi=3.1416;
			double a,s,d,f;
			double x1,y1,x2,y2;
			d=80.0;
			for(a=0.0;a<=2*pi;a+=pi/360)
			{
				s=d*(1.0+1.0/4*Math.Sin(12.0*a));
				f=s*(1.0+Math.Sin(4.0*a));
				x1=220+f*Math.Cos(a);
				x2=220+f*Math.Cos(a+pi/5.0);
				y1=160-f*Math.Sin(a);
				y2=160-f*Math.Sin(a+pi/5.0);
				g.DrawLine(pen,(int)x1,(int)y1,(int)x2,(int)y2);
			}
			//说明:
			//程序中的(3
		}

		private void menuItem14_Click(object sender, System.EventArgs e)
		{
			Graphics g=this.CreateGraphics();
			Pen pen=new Pen(Color.Red,1);
			g.Clear(this.BackColor);
			const double pi=3.1416;
			double a,s,d,f;
			double x1,y1,x2,y2;
			d=60.0;
			for(a=0.0;a<=2*pi;a+=2*pi/720)
			{
				s=d*(1.0+1.0/4*Math.Sin(12.0*a));
				f=s*(1.0+Math.Sin(4.0*a));
				x1=220+f*Math.Cos(a);
				x2=220+f*Math.Cos(a+pi/5.0);
				y1=160-f*Math.Sin(a);
				y2=160-f*Math.Sin(a+pi/5.0);
				g.DrawLine(pen,(int)x1,(int)y1,(int)x2,(int)y2);
			}
		}

		private void menuItem15_Click(object sender, System.EventArgs e)
		{
			Graphics g=this.CreateGraphics();
			Pen pen=new Pen(Color.Red,1);
			g.Clear(this.BackColor);
			const double pi=3.1416;
			double a,s,d,f;
			double x1,y1,x2,y2;
			d=80.0;
			for(a=0.0;a<=2*pi;a+=2*pi/960)
			{
				s=d*(1.0+1.0/4*Math.Sin(20.0*a));
				f=s*(1.0+Math.Sin(4.0*a));
				x1=220+f*Math.Cos(a);
				x2=220+f*Math.Cos(a+pi/5.0);
				y1=160-f*Math.Sin(a);
				y2=160-f*Math.Sin(a+pi/5.0);
				g.DrawLine(pen,(int)x1,(int)y1,(int)x2,(int)y2);
			}
		}

		private void menuItem16_Click(object sender, System.EventArgs e)
		{
			Graphics g=this.CreateGraphics();
			Pen pen=new Pen(Color.Red,1);
			g.Clear(this.BackColor);
			const double pi=3.1416;
			int d,s;
			double a,x1,y1,x2,y2,l,m,o,p;
			d=150;s=50;
			for(a=0;a<=2*pi;a+=pi/120)
			{
				l=d+d/3.0*(1+1.0/2*Math.Cos(12*a))*Math.Cos(a);
				x1=250+1.25*l*Math.Cos(a);
				m=s+s/3.0*(1+1.0/2*Math.Sin(12*a))*Math.Cos(a);
				x2=250+1.25*m*Math.Cos(a);
				o=d+d/3.0*(1+1.0/2*Math.Cos(4*a))*Math.Sin(a);
				y1=250-o*Math.Sin(a);
				p=s+s/2.0*(1+1.0/2*Math.Sin(15*a))*Math.Sin(a);
				y2=250-p*Math.Sin(a);
				g.DrawLine(pen,(int)x1,(int)y1,(int)x2,(int)y2);
			}
		}

		private void menuItem17_Click(object sender, System.EventArgs e)
		{
			//摩尔图案代码
			Graphics g=this.CreateGraphics();
			Pen pen=new Pen(Color.Red,1);
			g.Clear(this.BackColor);
			const double pi=3.1416;
			int x1,y1,x2,y2,d;
			double a,r;
			d=80;
			//主要代码
			for(a=0;a<=4*pi;a+=pi/120)
			{
				r=d*(1+0.5*Math.Sin(2.5*a));
				x1=220+(int)(r*Math.Cos(a+pi/5));
				x2=220+(int)(r*Math.Cos(a));
				y1=160-(int)(r*Math.Sin(a));
				y2=160-(int)(r*Math.Sin(a+pi/4));
				g.DrawLine(pen,x1,y1,x2,y2);
			}
		}

		private void menuItem18_Click(object sender, System.EventArgs e)
		{
			//摩尔图案代码
			Graphics g=this.CreateGraphics();
			Pen pen=new Pen(Color.Red,1);
			g.Clear(this.BackColor);
			const double pi=3.1416;
			double x1,y1,x2,y2;
			double a,b,c;
			int i=0;
			c=120.0f;
			//主要代码
			for(a=0;a<=2.0*pi;a+=pi/240.0f)
			{
				b=c*(1.0+1.5*Math.Sin(2.5*a)*Math.Cos(2.5*a));
				x1=220.0+b*Math.Cos(a);
				x2=220+b*Math.Cos(a+pi/4);
				y1=160-b*Math.Sin(a)/2;
				y2=160-b*Math.Sin(a+pi/4)/2;
				g.DrawLine(pen,(int)x1,(int)y1,(int)x2,(int)y2);
				i++;
			}
		}

		private void menuItem19_Click(object sender, System.EventArgs e)
		{
			//长瓣花形图案
			Graphics g=this.CreateGraphics();
			Pen pen=new Pen(Color.Red,1);
			g.Clear(this.BackColor);
			const double pi=3.14159;
			double a,s,d,f;
			double x1,y1,x2,y2;
			d=60.0;
			//主要代码
			for(a=0.0;a<=2*pi;a+=2*pi/720)
			{
				s=d*(1.0+1.0/4*Math.Sin(4.0*a));
				f=s*(1.0+Math.Sin(8.0*a));
				x1=220+f*Math.Cos(a);
				x2=220+f*Math.Cos(a+pi/8.0);
				y1=160-f*Math.Sin(a);
				y2=160-f*Math.Sin(a+pi/8.0);
				g.DrawLine(pen,(int)x1,(int)y1,(int)x2,(int)y2);
			}
		}

		private void menuItem20_Click(object sender, System.EventArgs e)
		{
			//长瓣花形图案
			Graphics g=this.CreateGraphics();
			Pen pen=new Pen(Color.Red,1);
			g.Clear(this.BackColor);
			const double pi=3.14159;
			double a,s,d,f;
			double x1,y1,x2,y2;
			d=60.0;
			//主要代码
			for(a=0.0;a<=2*pi;a+=2*pi/600)
			{
				s=d*(1.0+1.0/4.0*Math.Sin(3.0*a));
				f=s*(1.0+Math.Sin(6.0*a));
				x1=220+f*Math.Cos(a);
				x2=220+f*Math.Cos(a+pi/6.0);
				y1=160-f*Math.Sin(a);
				y2=160-f*Math.Sin(a+pi/6.0);
				g.DrawLine(pen,(int)x1,(int)y1,(int)x2,(int)y2);
			}
		}

		private void menuItem21_Click(object sender, System.EventArgs e)
		{
			//编程思想:
			//设画线点的y坐标固定,其x坐标按对数规律变化,即
			//       x=140+360*Log(n)/Log(25)
			//图中直线段的间距依对数关系分布。
			Graphics g=this.CreateGraphics();
			Pen pen=new Pen(Color.Black,1);
			g.Clear(this.BackColor);
			int x,y,n;
			y=4;
			for(n=1;n<=25;n++)
			{
				x=40+(int)(360*Math.Log(n)/Math.Log(25));
				g.DrawLine(pen,x,y,x,y+150);
			}
			y=160;
			for(n=1;n<=25;n++)
			{
				x=400-(int)(360*Math.Log(n)/Math.Log(25));
				g.DrawLine(pen,x,y,x,y+150);
			}
		}

		private void menuItem22_Click(object sender, System.EventArgs e)
		{
			Graphics g=this.CreateGraphics();
			Pen pen=new Pen(Color.Black,1);
			g.Clear(this.BackColor);
			int i,j,px,py,x1,y1;
			double x,y,a;
			const double PI=3.1416;
			i=0;j=0;
			for(px=40;px<=470;px+=60)
			{
				i=i+1;
				for(py=4;py<=350;py+=60)
				{
					if(j==6)j=1;
					else {j=j+1;}
					//关键代码
					if((i%2)==(j%2))
					{
						for(a=0;a<=PI;a+=PI/15)
						{
							y=60-60*Math.Sin(a);
							y1=(int)y;
							pen.Color=Color.Red;
							g.DrawLine(pen,px,py+y1,px+60,py+y1);
						}
					}
					else
					{
						for(a=0;a<=PI;a+=PI/25)
						{
							x=30-30*Math.Cos(a);
							x1=(int)x;
							pen.Color=Color.CornflowerBlue;
							g.DrawLine(pen,px+x1,py,px+x1,py+60);
						}
					}
				}
			}
		}

		private void menuItem23_Click(object sender, System.EventArgs e)
		{
			//将半径为r的圆周分为n(奇数或偶数)等分,并将所有等分点用直线相连,
			//则形成一幅类似金刚石的图案。
			Graphics g=this.CreateGraphics();
			Pen pen=new Pen(Color.Black,1);
			g.Clear(this.BackColor);
			double[] x=new double[50];
			double[] y=new double[50];
			int i,j,n;
			double r,theta;
			const double PI=3.1416;
			r=80.0;
			n=20;
			theta=2.0*PI/n;
			for(i=0;i<n;i++)
			{
				x[i]=2*r*Math.Cos(theta*(i+1))+220.0;
				y[i]=160.0-r*Math.Sin(theta*(i+1));
			}
			for(i=1;i<n-1;i++)
			{
				for(j=i+1;j<n;j++)
				{
					g.DrawLine(pen,(int)x[i],(int)y[i],(int)x[j],(int)y[j]);
				}
			}
	}

		private void menuItem24_Click(object sender, System.EventArgs e)
		{
			Graphics g=this.CreateGraphics();
			Pen pen=new Pen(Color.Black,1);
			g.Clear(this.BackColor);
			const double pi=3.1416;
			int n,b,c,l;
			double px,py,px2,py2,a,aa,x2,th,m,mx1,mx2,x,y;
			n=4;
			th=pi*(0.5-1.0/n);
			a=Math.Tan(th);
			b=50;
			c=180;
			l=30;
			m=a*a/(4*(b-l*a));
			mx1=Math.Sqrt((c-b)/m)+l;
			mx2=-Math.Sqrt((c-b)/m)+l;
			for(aa=0;aa<=2*pi*(n-1)/n+0.2;aa+=2*pi/n)
				for(x=mx2;x<=mx1;x+=(mx1-mx2)/60)
				{
					x2=x-2*l;
					y=m*(x-l)*(x-l)+b;
					px=x*Math.Cos(aa)-y*Math.Sin(aa)+220;
					px2=x2*Math.Cos(aa)-y*Math.Sin(aa)+220;
					py=x*Math.Sin(aa)+y*Math.Cos(aa)+200;
					py2=x2*Math.Sin(aa)+y*Math.Cos(aa)+200;
					g.DrawLine(pen,(int)px,(int)py,(int)px2,(int)py2);
				}
		}

		private void menuItem25_Click(object sender, System.EventArgs e)
		{
			Graphics g=this.CreateGraphics();
			Pen pen=new Pen(Color.Black,1);
			g.Clear(this.BackColor);
			const double pi=3.1416;
			int n,b,c,l;
			double px,py,px2,py2,a,aa,x2,th,m,mx1,mx2,x,y;
			n=5;
			th=pi*(0.5-1.0/n);
			a=Math.Tan(th);
			b=50;
			c=180;
			l=30;
			m=a*a/(4*(b-l*a));
			mx1=Math.Sqrt((c-b)/m)+l;
			mx2=-Math.Sqrt((c-b)/m)+l;
			for(aa=0;aa<=2*pi*(n-1)/n+0.2;aa+=2*pi/n)
				for(x=mx2;x<=mx1;x+=(mx1-mx2)/60)
				{
					x2=x-2*l;
					y=m*(x-l)*(x-l)+b;
					px=x*Math.Cos(aa)-y*Math.Sin(aa)+220;
					px2=x2*Math.Cos(aa)-y*Math.Sin(aa)+220;
					py=x*Math.Sin(aa)+y*Math.Cos(aa)+200;
					py2=x2*Math.Sin(aa)+y*Math.Cos(aa)+200;
					g.DrawLine(pen,(int)px,(int)py,(int)px2,(int)py2);
				}
		}
	}
}

⌨️ 快捷键说明

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