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

📄 example.cs

📁 画图程序
💻 CS
📖 第 1 页 / 共 2 页
字号:
		DShapeList tempPoint = new DShapeList();

		private void BeziersBox_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
		{
			if (e.Button != MouseButtons.Left)
				return;
			newPoint = new MousePoint(e.X, e.Y);
			switch(newType)
			{
				case MainWindow.ImageType.CircleAt:
					star[starCount++] = newPoint.StartP;
					tempPoint.Add(new DPoint(new Point[]{newPoint.StartP}, Color.DarkRed,1));
					BeziersBox.Invalidate();
					break;
				case MainWindow.ImageType.Beziers:
					tpointCollection.Add(newPoint.StartP);
					newPoint.StartP.Offset(-2,-2);
					Rectangle r = new Rectangle(newPoint.StartP,new Size(4,4));
					Region rr = new Region(r);
					regionCollection.Add(rr);
					Point startp2 = newPoint.StartP;
					startp2.Offset(4,4);
					pointList.Add(new DHollowRectangle(new Point[]{newPoint.StartP,startp2},Color.DarkRed,1));
					BeziersBox.Invalidate();
					break;
				case MainWindow.ImageType.Set:
					for(int i=0;i<regionCollection.Count;i++)
					{
						if(regionCollection[i].IsVisible(newPoint.StartP))
						{
							newPoint = new MousePoint(e.X,e.Y);
							beziersPoint = i;
							BezierIndex = Found(i);
							pointChange = true;
							break;
						}
					}
					break;
			}
		}

		private void BeziersBox_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
		{
			if (e.Button != MouseButtons.Left)
				return;
			newPoint.EndX = e.X;
			newPoint.EndY = e.Y;
			switch(newType)
			{
				case MainWindow.ImageType.Set:	
					if(pointChange ==false)
						return;
					newPoint.EndP.Offset(-2,-2);
					Rectangle r = new Rectangle(newPoint.EndP,new Size(4,4));
					Region rr = new Region(r);
					regionCollection[beziersPoint]=rr;
					pointCollection[beziersPoint]=newPoint.EndP;
					Point[] p = MakePoints();
					Point endp2 = newPoint.StartP;
					endp2.Offset(4,4);
					pointList[beziersPoint] = new DHollowRectangle(new Point[]{newPoint.EndP,endp2},Color.DarkRed, 1);
					beziersList[BezierIndex] = new DBeziers(p,Color.Black,1);
					break;
			}
			BeziersBox.Invalidate();
		}

		private void BeziersBox_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
		{
			switch(newType)
			{
				case MainWindow.ImageType.Line:
					drawingList.Add(new DPLine(newPoint.StartP,newPoint.EndP,Color.Black,style,scap,ecap));
					break;
				case MainWindow.ImageType.Rectangle:
					drawingList.Add(new DPRectangle(newPoint.Rect,Color.Blue,style));
					break;
				case MainWindow.ImageType.CircleAt:
					if(starCount ==10)
					{
						pointChange = true;
						starCount=0;
						tempPoint = new DShapeList();
					}
					break;
				case MainWindow.ImageType.Set:
					pointChange = false;
					break;
			}
			BeziersBox.Invalidate();
		}

		private void BeziersBox_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
		{
			Graphics g = e.Graphics;
			switch(newType)
			{
				case MainWindow.ImageType.Line:
					g.DrawLine(stylePen,newPoint.StartP,newPoint.EndP);
					break;
				case MainWindow.ImageType.Rectangle:
					g.DrawRectangle(stylePen,newPoint.Rect);
					break;
				case MainWindow.ImageType.CircleAt:
					tempPoint.DrawList(g);
					if(starCount == 0&&pointChange==true)
					{
						GraphicsPath path = new GraphicsPath();
						path.AddLines(star);
						PathGradientBrush pthGrBrush = new PathGradientBrush(path);
						pthGrBrush.CenterColor = Color.FromArgb(255, 255, 0, 0);
						Color[] colors = {
											 Color.FromArgb(255, 0, 0, 0),
											 Color.FromArgb(255, 0, 255, 0),
											 Color.FromArgb(255, 0, 0, 255), 
											 Color.FromArgb(255, 255, 255, 255),
											 Color.FromArgb(255, 0, 0, 0),
											 Color.FromArgb(255, 0, 255, 0),
											 Color.FromArgb(255, 0, 0, 255),
											 Color.FromArgb(255, 255, 255, 255),
											 Color.FromArgb(255, 0, 0, 0),  
											 Color.FromArgb(255, 0, 255, 0)};
						pthGrBrush.SurroundColors = colors;
						e.Graphics.FillPath(pthGrBrush, path);
					}
					break;
				case MainWindow.ImageType.Beziers:
					Rectangle r = new Rectangle(newPoint.StartP,new Size(4,4));
					g.DrawRectangle(new Pen(Color.DarkRed),r);
					break;
			}			
			drawingList.DrawList(g);
			pointList.DrawList(g);
			beziersList.DrawList(g);
		}

		private void Line_Click(object sender, System.EventArgs e)
		{
			newType = MainWindow.ImageType.Line;
		}

		private void Rectangle_Click(object sender, System.EventArgs e)
		{
			newType = MainWindow.ImageType.Rectangle;
		}

		private void FiveStar_Click(object sender, System.EventArgs e)
		{
			newType = MainWindow.ImageType.CircleAt;
		}

		private void Bezier_Click(object sender, System.EventArgs e)
		{
			newType = MainWindow.ImageType.Beziers;
		}

		private void Exit_Click(object sender, System.EventArgs e)
		{
			this.Close();
		}

		private void Finish_Click(object sender, System.EventArgs e)
		{
			if(newType != MainWindow.ImageType.Beziers)
				return;
			if((tpointCollection.Count%3)!=1 || (tpointCollection.Count==1))
			{
				MessageBox.Show("Please input points%3 = 1");
				return;
			}
			pointNumber.Add(tpointCollection.Count);
			Point[] point = new Point[tpointCollection.Count];
			int i = 0;
			foreach(Point newP in tpointCollection)
			{
				point[i++]=newP;
			}
			beziersList.Add(new DBeziers(point,Color.Black,1));
			BeziersBox.Invalidate();
			pointCollection.AddRange(point);
			pointSum.Add(pointCollection.Count);
			tpointCollection.RemoveRange(0,tpointCollection.Count);
		}

		private void Clear_Click(object sender, System.EventArgs e)
		{
			beziersList = new DShapeList();
			pointList = new DShapeList();
			tpointCollection = new PointCollection();
			pointCollection = new PointCollection();
			regionCollection = new NewRegion();
			beziersPoint = 0;
			BezierIndex = 0;
			pointNumber = new Number();
			pointSum = new Number();
			drawingList = new DShapeList();
			pointChange = false;
			star = new Point[10];
			starCount = 0;
			tempPoint = new DShapeList();
			newType = MainWindow.ImageType.Empty;
			this.BeziersBox.Image=null;
			BeziersBox.Invalidate();
		}

		private void Change_Click(object sender, System.EventArgs e)
		{
			newType = MainWindow.ImageType.Set;
		}

		private int Found(int i)
		{
			int j;
			for(j=0;j<pointSum.Count;j++)
			{
				if(i<pointSum[j])
					break;
			}
			return j;
		}

		private Point[] MakePoints()
		{
			int start;
			int count;
			count = pointNumber[BezierIndex];
			Point[] npoint = new Point[count];
			if(BezierIndex ==0)
				start = 0;
			else
				start = pointSum[BezierIndex-1];
			for(int k=0;k<count;k++)
			{
				npoint[k]=pointCollection[start++];
			}
			return npoint;
		}

		private void AddPoint_Click(object sender, System.EventArgs e)
		{
			newType = MainWindow.ImageType.Beziers;
		}

		private void Dash_Click(object sender, System.EventArgs e)
		{
			style = DashStyle.Dash;
			stylePen.DashStyle = DashStyle.Dash;
		}

		private void DashDot_Click(object sender, System.EventArgs e)
		{
			style = DashStyle.DashDot;
			stylePen.DashStyle  = DashStyle.DashDot;
		}

		private void DashDotDot_Click(object sender, System.EventArgs e)
		{
			style = DashStyle.DashDotDot;
			stylePen.DashStyle = DashStyle.DashDotDot;
		}

		private void Dot_Click(object sender, System.EventArgs e)
		{
			style = DashStyle.Dot;
			stylePen.DashStyle = DashStyle.Dot;
		}

		private void Solid_Click(object sender, System.EventArgs e)
		{
			style = DashStyle.Solid;
			stylePen.DashStyle = DashStyle.Solid;
		}

		private void LineCap_Click(object sender, System.EventArgs e)
		{
			stylePen.EndCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor;
			stylePen.StartCap = System.Drawing.Drawing2D.LineCap.RoundAnchor;
			ecap = System.Drawing.Drawing2D.LineCap.ArrowAnchor;
			scap = System.Drawing.Drawing2D.LineCap.RoundAnchor;
		}

		private void PrintScreen_Click(object sender, System.EventArgs e)
		{
			SavePic s = new SavePic();
			this.BeziersBox.Image = s.newImage;
		}
	}
}

⌨️ 快捷键说明

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