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

📄 form1.cs

📁 这是《C#图形程序设计》这本书的源代码
💻 CS
字号:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace 空间曲面
{
	/// <summary>
	/// Form1 的摘要说明。
	/// </summary>
	public class Form1 : System.Windows.Forms.Form
	{
		private System.Windows.Forms.MainMenu mainMenu1;
		private System.Windows.Forms.MenuItem menuItem1;
		private System.Windows.Forms.MenuItem menuItem2;
		private System.Windows.Forms.PictureBox pictureBox1;
		public Point p1=new Point();
		public Point p2=new Point();
		public Point p3=new Point();
		private System.Windows.Forms.MenuItem menuItem4;
		private System.Windows.Forms.MenuItem menuItem6;
		private System.Windows.Forms.MenuItem menuItem7;
		private System.Windows.Forms.MenuItem menuItem8;
		private System.Windows.Forms.MenuItem menuItem9;
		private System.Windows.Forms.MenuItem menuItem3;
		private System.Windows.Forms.MenuItem menuItem5;
		/// <summary>
		/// 必需的设计器变量。
		/// </summary>
		private System.ComponentModel.Container components = null;

		public Form1()
		{
			//
			// Windows 窗体设计器支持所必需的
			//
			InitializeComponent();

			//
			// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
			//
		}

		/// <summary>
		/// 清理所有正在使用的资源。
		/// </summary>
		protected override void Dispose( bool disposing )
		{
			if( disposing )
			{
				if (components != null) 
				{
					components.Dispose();
				}
			}
			base.Dispose( disposing );
		}

		#region Windows 窗体设计器生成的代码
		/// <summary>
		/// 设计器支持所需的方法 - 不要使用代码编辑器修改
		/// 此方法的内容。
		/// </summary>
		private void InitializeComponent()
		{
			this.mainMenu1 = new System.Windows.Forms.MainMenu();
			this.menuItem1 = new System.Windows.Forms.MenuItem();
			this.menuItem2 = new System.Windows.Forms.MenuItem();
			this.menuItem4 = new System.Windows.Forms.MenuItem();
			this.menuItem6 = new System.Windows.Forms.MenuItem();
			this.menuItem7 = new System.Windows.Forms.MenuItem();
			this.menuItem8 = new System.Windows.Forms.MenuItem();
			this.menuItem9 = new System.Windows.Forms.MenuItem();
			this.pictureBox1 = new System.Windows.Forms.PictureBox();
			this.menuItem3 = new System.Windows.Forms.MenuItem();
			this.menuItem5 = new System.Windows.Forms.MenuItem();
			this.SuspendLayout();
			// 
			// mainMenu1
			// 
			this.mainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
																					  this.menuItem1,
																					  this.menuItem4,
																					  this.menuItem6,
																					  this.menuItem8});
			// 
			// menuItem1
			// 
			this.menuItem1.Index = 0;
			this.menuItem1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
																					  this.menuItem2,
																					  this.menuItem5});
			this.menuItem1.Text = "数学曲面";
			// 
			// menuItem2
			// 
			this.menuItem2.Index = 0;
			this.menuItem2.Text = "回转曲面";
			this.menuItem2.Click += new System.EventHandler(this.menuItem2_Click);
			// 
			// menuItem4
			// 
			this.menuItem4.Index = 1;
			this.menuItem4.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
																					  this.menuItem3});
			this.menuItem4.Text = "Coons曲面";
			// 
			// menuItem6
			// 
			this.menuItem6.Index = 2;
			this.menuItem6.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
																					  this.menuItem7});
			this.menuItem6.Text = "贝济埃曲线";
			// 
			// menuItem7
			// 
			this.menuItem7.Index = 0;
			this.menuItem7.Text = "双三次贝济埃曲线";
			// 
			// menuItem8
			// 
			this.menuItem8.Index = 3;
			this.menuItem8.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
																					  this.menuItem9});
			this.menuItem8.Text = "B样条曲面";
			// 
			// menuItem9
			// 
			this.menuItem9.Index = 0;
			this.menuItem9.Text = "双三次B样条曲面";
			// 
			// pictureBox1
			// 
			this.pictureBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
				| System.Windows.Forms.AnchorStyles.Left) 
				| System.Windows.Forms.AnchorStyles.Right)));
			this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
			this.pictureBox1.Location = new System.Drawing.Point(8, 8);
			this.pictureBox1.Name = "pictureBox1";
			this.pictureBox1.Size = new System.Drawing.Size(528, 432);
			this.pictureBox1.TabIndex = 0;
			this.pictureBox1.TabStop = false;
			// 
			// menuItem3
			// 
			this.menuItem3.Index = 0;
			this.menuItem3.Text = "双三次Coons曲面";
			// 
			// menuItem5
			// 
			this.menuItem5.Index = 1;
			this.menuItem5.Text = "双线性曲面";
			// 
			// Form1
			// 
			this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
			this.ClientSize = new System.Drawing.Size(544, 446);
			this.Controls.Add(this.pictureBox1);
			this.Menu = this.mainMenu1;
			this.Name = "Form1";
			this.Text = "Form1";
			this.ResumeLayout(false);

		}
		#endregion

		/// <summary>
		/// 应用程序的主入口点。
		/// </summary>
		[STAThread]
		static void Main() 
		{
			Application.Run(new Form1());
		}

		private void menuItem2_Click(object sender, System.EventArgs e)
		{
			Graphics g=pictureBox1.CreateGraphics();
			Pen pen1=new Pen(Color.Blue);
			g.Clear(this.BackColor);
			double[,] r=new double[4,4];  double[,] v=new double[4,4];
			double[] p=new double[2];	  double[] q=new double[3];
			double[] pp=new double[4];    double[] qq=new double[4];
			int i,j,k;
			int zo,l,m;
			double xmin,xmax,ymin,ymax,kx,ky,angle,u,w,theta;
			xmin=-11;xmax=2;ymin=-4.5;ymax=250.0*(xmax-xmin)/400.0+ymin;
			kx=400.0/(xmax-xmin);    ky=250.0/(ymax-ymin);
			p[0]=4;p[1]=0.5;angle=3.1415926/8;
			zo=2; int i1,j1;
			for(i1=0;i1<4;i1++)
			{
				for(j1=0;j1<4;j1++)
				{
					v[i1,j1]=0;
				}
			}
			v[3,3]=1;		v[zo,zo]=1;
			i1=zo+1;		
			if(i1==3)i1=0;
			j1=i1+1;
			if(j1==3)j1=0;
			v[i1,i1]=Math.Cos(angle);		v[j1,j1]=v[i1,i1];
			v[j1,i1]=Math.Sin(angle);		v[i1,j1]=-v[j1,i1];
			angle=0;	zo=0;
			int i2,j2;
			for(i2=0;i2<4;i2++)
			{
				for(j2=0;j2<4;j2++)
				{
					r[i2,j2]=0;
				}
			}
			r[3,3]=1;		r[zo,zo]=1;
			i2=zo+1;		
			if(i2==3)i2=0;
			j2=i2+1;
			if(j2==3)j2=0;
			r[i2,i2]=Math.Cos(angle);		r[j2,j2]=r[i2,i2];
			r[i2,j2]=Math.Sin(angle);		r[j2,i2]=-r[i2,j2];
			int i3,j3;
			double[,] temp=new double[4,4];
			for(i3=0;i3<4;i3++)
			{
				for(j3=0;j3<4;j3++)
				{
					temp[i3,j3]=0;
					for(k=0;k<4;k++)
					{
						temp[i3,j3]+=v[i3,k]*r[k,j3];
					}
				}
			}
			for(i3=0;i3<4;i3++)
			{
				for(j3=0;j3<4;j3++)
				{
					v[i3,j3]=temp[i3,j3];
				}
			}
			l=10;			m=20;
			for(i=0;i<=l;i++)
			{
				u=(double)i/l;
				for(j=0;j<=m;j++)
				{
					w=(double)j/m;
					theta=2*3.1415926*w;
					q[0]=p[0]*p[0]*u*u/(4*p[1]);	q[1]=p[0]*u*Math.Cos(theta);
					q[2]=p[0]*u*Math.Sin(theta);
					int i4,j4;
					for(i4=0;i4<3;i4++)
					{
						pp[i4]=q[i4];	q[i4]=0;	qq[i4]=q[i4];
					}
					pp[3]=1;	qq[3]=pp[3];
					for(i4=0;i4<4;i4++)
					{
						for(j4=0;j4<4;j4++)
						{
							qq[i4]=qq[i4]+pp[j4]*v[j4,i4];
						}
					}
					for(i4=0;i4<3;i4++)
					{
						q[i4]=qq[i4];
					}
					if(j==0)
					{
						p1.X=(int)(kx*(-q[0]-xmin)+50);
						p1.Y=-(int)(ky*(q[2]-ymin)-270);
					}
					else
					{
						p2.X=(int)(kx*(-q[0]-xmin)+50);
						p2.Y=-(int)(ky*(q[2]-ymin)-270);
						g.DrawLine(pen1,p1,p2);
						p1=p2;
					}
				}
			}
			for(i=0;i<=m;i++)
			{
				w=(double)i/m;
				for(j=0;j<=l;j++)
				{
					u=(double)j/l;
					theta=2*3.1415926*w;
					q[0]=p[0]*p[0]*u*u/(4*p[1]);	q[1]=p[0]*u*Math.Cos(theta);
					q[2]=p[0]*u*Math.Sin(theta);
					int i5,j5;
					for(i5=0;i5<3;i5++)
					{
						pp[i5]=q[i5];	q[i5]=0;	qq[i5]=q[i5];
					}
					pp[3]=1;	qq[3]=pp[3];
					for(i5=0;i5<4;i5++)
					{
						for(j5=0;j5<4;j5++)
						{
							qq[i5]=qq[i5]+pp[j5]*v[j5,i5];
						}
					}
					for(i5=0;i5<3;i5++)
					{
						q[i5]=qq[i5];
					}
					if(j==0)
					{
						p1.X=(int)(kx*(-q[0]-xmin)+50);
						p1.Y=-(int)(ky*(q[2]-ymin)-270);
					}
					else
					{
						p2.X=(int)(kx*(-q[0]-xmin)+50);
						p2.Y=-(int)(ky*(q[2]-ymin)-270);
						g.DrawLine(pen1,p1,p2);
						p1=p2;
					}
				}
			}
		}
	}
}

⌨️ 快捷键说明

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