示例#1
0
						}
						else if(!this.IsMouseOnAnyControl(e.X,e.Y))
						{
							this.iMouseDownX=e.X;
							this.iMouseDownY=e.Y;
							this.iMouseSelectX=e.X;
							this.iMouseSelectY=e.Y;
							this.bNotSelectAnyOne=true;
							this.bSelectRectangleReday=false;
							this.arrLineSelectList.Clear();
							this.arrNodeSelectList.Clear();
							this.arrDrawStringSelectList.Clear();
							this.arrLineNotSelectList.Clear();
							this.arrNodeNotSelectList.Clear();
							this.arrDrawStringNotSelectList.Clear();
							this.lastEdit=null;
							this.AttriShow();
							this.control.Invalidate();
							return;
						}
						else
						{
							this.bNotSelectAnyOne=true;
							this.bSelectRectangleReday=false;
							this.arrLineSelectList.Clear();
							this.arrNodeSelectList.Clear();
							this.arrDrawStringSelectList.Clear();
							this.arrLineNotSelectList.Clear();
							this.arrNodeNotSelectList.Clear();
							this.arrDrawStringNotSelectList.Clear();
							this.lastEdit=null;
							this.AttriShow();
							this.control.Invalidate();
							return;
						}
					}
					this.nodeSelectNode=this.IsMouseOnNode(e.X,e.Y,this.arrNodeList);//鼠标是否在节点上
					if(this.nodeSelectNode!=null && this.nodeTempNode==null)//当nodeSelectNode不为空,表示鼠标在该节点上
					{
						if(e.Clicks==2)
						{
							this.control.testDrawLength.Text=this.nodeSelectNode.NodeText;
							if(this.control.testDrawLength.Width<50)
							{
								this.TBnodeContent.Width=50;
							}
							else
							{
								this.TBnodeContent.Width=this.control.testDrawLength.Width+3;
							}
							this.TBnodeContent.Font=this.nodeSelectNode.NodeTextFont;
							this.TBnodeContent.Location=new Point(this.nodeSelectNode.X+this.nodeSelectNode.Width/2-this.TBnodeContent.Width/2,this.nodeSelectNode.Y+this.nodeSelectNode.Height);
							this.TBnodeContent.Text=this.nodeSelectNode.NodeText;
							this.TBnodeContent.Visible=true;
							this.TBnodeContent.Focus();
							this.TBnodeContent.SelectAll();
							this.RefreshBackground();
							return;
						}
						else
						{
							this.iMouseInitX=e.X;
							this.iMouseInitY=e.Y;
							this.iNodeX=this.nodeSelectNode.X;
							this.iNodeY=this.nodeSelectNode.Y;
							this.iNodeWidth=this.nodeSelectNode.Width;
							this.iNodeHeight=this.nodeSelectNode.Height;
							this.GetConnectNodeLine(this.nodeSelectNode);
							this.selectPoint.SetRectanglePoint(this.iNodeX,this.iNodeY,this.iNodeWidth,this.iNodeHeight);
							if(this.arrLineConnectNode.Count!=0)//该节点上是否有线连接到  0表示没有线连接  其他值表示有count条线连接
							{//有线连接  让该节点成为活动节点  和  让所有连接的线成为活动线
								this.ReDrawBitmapNodeMove(this.graDrawPanel,this.nodeSelectNode.NodeListIndex);
							}
							else
							{//没有线连接  让该节点成为活动节点
								this.reDrawBitmap(this.graDrawPanel,0,this.nodeSelectNode.NodeListIndex);
							}
							this.bDrawConnectNodeLine=true;
							this.bDrawNode=true;
							this.RefreshBackground();
							//							this.control.Invalidate();
							return;
						}
					}
					else if(this.nodeSelectNode==null)
					{
						this.drawStringSelectDS=this.IsMouseOnDrawString(e.X,e.Y,this.arrDrawStringList);
						if(this.drawStringSelectDS!=null)//移动画板
						{
							if(e.Clicks==2)
							{
								this.TBDrawStringContent.Font=this.drawStringSelectDS.DSTextFont;
								this.TBDrawStringContent.SetBounds(this.drawStringSelectDS.X,this.drawStringSelectDS.Y,this.drawStringSelectDS.Width,this.drawStringSelectDS.Height);
								this.TBDrawStringContent.Text=this.strDSContent;
								this.TBDrawStringContent.Visible=true;
								this.TBDrawStringContent.Focus();
								this.TBDrawStringContent.SelectAll();
								return;
							}
							else
							{
								this.iMouseInitX=e.X;
								this.iMouseInitY=e.Y;
								this.iDrawStringX=this.drawStringSelectDS.X;
								this.iDrawStringY=this.drawStringSelectDS.Y;
								this.iDrawStringWidth=this.drawStringSelectDS.Width;
								this.iDrawStringHeight=this.drawStringSelectDS.Height;
								this.strDSContent=this.drawStringSelectDS.Content;
								this.selectPoint.SetRectanglePoint(this.iDrawStringX,this.iDrawStringY,this.iDrawStringWidth,this.iDrawStringHeight);
								this.reDrawBitmap(this.graDrawPanel,2,this.drawStringSelectDS.DrawStrListIndex);
								this.bDrawString=true;
								this.RefreshBackground();
								//								this.control.Invalidate();
								return;
							}
						}
						else if(this.drawStringSelectDS==null && this.nodeSelectNode==null)
						{
							this.lineSelectLine=this.IsMouseOnLine(e.X,e.Y,this.arrLineList);
							if(this.lineSelectLine!=null)
							{
								if(e.Clicks==2)
								{
									this.control.testDrawLength.Text=this.lineSelectLine.Content;
									if(this.control.testDrawLength.Width<50)
									{
										this.TBLineContent.Width=50;
									}
									else
									{
										this.TBLineContent.Width=this.control.testDrawLength.Width+3;
									}
									this.TBLineContent.Font=this.lineSelectLine.LineTextFont;
									if(this.lineSelectLine.ObjectType==Line.DrawObjectType.DrawBeeLine)
									{
										this.TBLineContent.Location=new Point((this.lineSelectLine.X0+this.lineSelectLine.X1)/2-this.TBLineContent.Width/2,(this.lineSelectLine.Y0+this.lineSelectLine.Y1)/2);
									}
									else
									{
										this.TBLineContent.Location=new Point((this.lineSelectLine.X1+this.lineSelectLine.X2)/2-this.control.testDrawLength.Width/2,(this.lineSelectLine.Y1+this.lineSelectLine.Y2)/2);
									}
									this.TBLineContent.Text=this.lineSelectLine.Content;
									this.TBLineContent.Visible=true;
									if(this.lineSelectLine.Modality)
									{
										this.iLineFirstNodeX=this.lineSelectLine.GetLineNodeInfo(0);
										this.iLineFirstNodeY=this.lineSelectLine.GetLineNodeInfo(1);
										this.iLineSecondNodeX=this.lineSelectLine.GetLineNodeInfo(2);
										this.iLineSecondNodeY=this.lineSelectLine.GetLineNodeInfo(3);
										this.iLine3thNodeX=this.lineSelectLine.GetLineNodeInfo(4);
										this.iLine3thNodeY=this.lineSelectLine.GetLineNodeInfo(5);
										this.iLine4thNodeX=this.lineSelectLine.GetLineNodeInfo(6);
										this.iLine4thNodeY=this.lineSelectLine.GetLineNodeInfo(7);									
									}
									this.TBLineContent.Focus();
									this.TBLineContent.SelectAll();
									this.RefreshBackground();
									return;
								}
								this.iSelectNodeIndex=99;
								this.iMouseInitX=e.X;
								this.iMouseInitY=e.Y;
								this.iMouseDownX=e.X;
								this.iMouseDownY=e.Y;
								this.reDrawBitmap(this.graDrawPanel,1,this.lineSelectLine.LineListIndex);
								this.RefreshBackground();
								if(this.lineSelectLine.ObjectType==Line.DrawObjectType.DrawBeeLine)
								{
									this.iLineFirstNodeX=this.lineSelectLine.GetLineNodeInfo(0);
									this.iLineFirstNodeY=this.lineSelectLine.GetLineNodeInfo(1);
									this.iLineSecondNodeX=this.lineSelectLine.GetLineNodeInfo(2);
									this.iLineSecondNodeY=this.lineSelectLine.GetLineNodeInfo(3);
									this.selectPoint.SetLinePoint(this.iLineFirstNodeX,this.iLineFirstNodeY,this.iLineSecondNodeX,this.iLineSecondNodeY);
								}
								else
								{
									this.iLineFirstNodeX=this.lineSelectLine.GetLineNodeInfo(0);
									this.iLineFirstNodeY=this.lineSelectLine.GetLineNodeInfo(1);
									this.iLineSecondNodeX=this.lineSelectLine.GetLineNodeInfo(2);
									this.iLineSecondNodeY=this.lineSelectLine.GetLineNodeInfo(3);
									this.iLine3thNodeX=this.lineSelectLine.GetLineNodeInfo(4);
									this.iLine3thNodeY=this.lineSelectLine.GetLineNodeInfo(5);
									this.iLine4thNodeX=this.lineSelectLine.GetLineNodeInfo(6);
									this.iLine4thNodeY=this.lineSelectLine.GetLineNodeInfo(7);
									this.selectPoint.SetFlodLinePoint(this.lineSelectLine);
								}
								this.bDrawLine=true;
								this.control.Invalidate();
								return;
							}
							else
							{
								this.iMouseDownX=e.X;
								this.iMouseDownY=e.Y;
								this.iMouseSelectX=e.X;
								this.iMouseSelectY=e.Y;
								this.bNotSelectAnyOne=true;
								this.bSelectRectangleReday=false;
								this.arrLineSelectList.Clear();
								this.arrNodeSelectList.Clear();
								this.arrDrawStringSelectList.Clear();
								this.arrLineNotSelectList.Clear();
								this.arrNodeNotSelectList.Clear();
								this.arrDrawStringNotSelectList.Clear();
								this.lastEdit=null;
								this.AttriShow();
								this.control.Invalidate();
							}
						}
					}
				}
			}		
		}
		/// <summary>
		/// 鼠标移动事件
		/// </summary>
		/// <param name="e"></param>
		public void MouseMove(System.Windows.Forms.MouseEventArgs e)
		{
			if(e.Button==MouseButtons.Left)
			{
				if(this.bSelectAllReday && this.control.Cursor==Cursors.SizeAll)
				{
					int iMoveWidth=e.X-this.iMouseInitX;
					int iMoveHeight=e.Y-this.iMouseInitY;
					Line line;
					Node node;
					DrawString drawString;
					for(int i=0;i<this.arrLineList.Count;i++)
					{
						line=(Line)this.arrLineList[i];
						line.X0+=iMoveWidth;
						line.Y0+=iMoveHeight;
						line.X1+=iMoveWidth;
						line.Y1+=iMoveHeight;
						if(line.ObjectType==Line.DrawObjectType.DrawFoldLine)
						{
							line.X2+=iMoveWidth;
							line.Y2+=iMoveHeight;
							line.X3+=iMoveWidth;
							line.Y3+=iMoveHeight;
						}
					}
					for(int i=0;i<this.arrNodeList.Count;i++)
					{
						node=(Node)this.arrNodeList[i];
						node.X+=iMoveWidth;
						node.Y+=iMoveHeight;
					}
					
					for(int i=0;i<this.arrDrawStringList.Count;i++)
					{
						drawString=(DrawString)this.arrDrawStringList[i];
						drawString.X+=iMoveWidth;
						drawString.Y+=iMoveHeight;
					}
					this.bSelectAll=true;
					this.control.Invalidate();
					this.iMouseInitX=e.X;
					this.iMouseInitY=e.Y;
					return;
				}
				else if(this.lineThisLine!=null)//正在生成新线
				{
					this.size=this.control.Size;
					if(0<e.X && e.X<this.size.Width && 0<e.Y && e.Y<this.size.Height)
					{
						if(this.lineThisLine.ObjectType==Line.DrawObjectType.DrawBeeLine)
						{
							this.iLineSecondNodeX=e.X;
							this.iLineSecondNodeY=e.Y;
							this.selectPoint.LinePoint[1].X=e.X;
							this.selectPoint.LinePoint[1].Y=e.Y;
							this.isLineRoundNode(e.X,e.Y,this.lineThisLine,1);//判断是否靠近某节点的连接点
						}
						else 
						{
							this.iLineSecondNodeX=(this.iLineFirstNodeX+e.X)/2;
							this.iLineSecondNodeY=this.iLineFirstNodeY;
							this.iLine3thNodeX=(this.iLineFirstNodeX+e.X)/2;
							this.iLine3thNodeY=e.Y;
							this.iLine4thNodeX=e.X;
							this.iLine4thNodeY=e.Y;
							this.selectPoint.LinePoint[1].X=(this.iLineFirstNodeX+e.X)/2;
							this.selectPoint.LinePoint[1].Y=this.iLineFirstNodeY;
							this.selectPoint.LinePoint[2].X=(this.iLineFirstNodeX+e.X)/2;
							this.selectPoint.LinePoint[2].Y=e.Y;
							this.selectPoint.LinePoint[3].X=e.X;
							this.selectPoint.LinePoint[3].Y=e.Y;
							this.isLineRoundNode(e.X,e.Y,this.lineThisLine,3);//判断是否靠近某节点的连接点
						}
						this.bDrawLine=true;
						this.control.Invalidate();
					}
					return;
				}
				else if(this.nodeThisNode!=null)//正在生成新节点
				{
					this.size=this.control.Size;
					if(e.X<=this.iTempNodeX)
					{
						this.iNodeX=e.X;
						this.iNodeWidth=this.iTempNodeX-e.X;
					}
					else
					{
						this.iNodeX=this.iTempNodeX;
						this.iNodeWidth=e.X-this.iTempNodeX;
					}

					if(e.Y<=this.iTempNodeY)
					{
						this.iNodeY=e.Y;
						this.iNodeHeight=this.iTempNodeY-e.Y;
					}
					else
					{
						this.iNodeY=this.iTempNodeY;
						this.iNodeHeight=e.Y-this.iTempNodeY;
					}
					this.selectPoint.SetRectanglePoint(this.iNodeX,this.iNodeY,this.iNodeWidth,this.iNodeHeight);
					this.bDrawNode=true;
					this.control.Invalidate();
					return;
				}
				else if(this.drawStringThisDS!=null)//正在生成新写字板
				{
					this.size=this.control.Size;
					if(0<e.X && e.X<this.size.Width && 0<e.Y && e.Y<this.size.Height)
					{
						if(e.X<=this.iTempDSX)
						{
							this.iDrawStringX=e.X;
							this.iDrawStringWidth=this.iTempDSX-e.X;
						}
						else
						{
							this.iDrawStringX=this.iTempDSX;
							this.iDrawStringWidth=e.X-this.iTempDSX;
						}

						if(e.Y<=this.iTempDSY)
						{
							this.iDrawStringY=e.Y;
							this.iDrawStringHeight=this.iTempDSY-e.Y;
						}
						else
						{
							this.iDrawStringY=this.iTempDSY;
							this.iDrawStringHeight=e.Y-this.iTempDSY;
						}					
						this.selectPoint.SetRectanglePoint(this.iDrawStringX,this.iDrawStringY,this.iDrawStringWidth,this.iDrawStringHeight);
						this.bDrawString=true;
						this.control.Invalidate();
					}
					return;
				}
				else if(this.lineSelectLine!=null && this.iSelectNodeIndex!=99 && this.TBLineContent.Visible==false)//正在编辑选中的线(变型)
        public string GetControlInfo()
        {
            ArrayList arrNodeList   = drawObject.NodeList;
            ArrayList arrLineList   = drawObject.LineList;
            ArrayList arrStringList = drawObject.StringList;
            string    controlXml    = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n";

            controlXml += "<WorkFlow>\r\n";
            controlXml += "  <arrNodeList>\r\n";
            for (int i = 0; i < arrNodeList.Count; i++)
            {
                Node node = (Node)arrNodeList[i];

                controlXml += "    <node nodeID='" + node.NodeListIndex + "' nodeType='" + (int)node.ObjectType + "'>\r\n" +
                              "      <nodeText><![CDATA[" + node.NodeText.Replace("<", "<") + "]]></nodeText>\r\n" +
                              "      <nodeFontName>" + node.NodeTextFont.Name + "</nodeFontName>\r\n" +
                              "      <nodeFontSize>" + node.TextSize + "</nodeFontSize>\r\n" +
                              "      <nodeTextColor>" + node.NodeTextColor.ToArgb() + "</nodeTextColor>\r\n" +
                              "      <nodeBorderColor>" + node.BorderColor.ToArgb() + "</nodeBorderColor>\r\n" +
                              "      <nodeFillColor>" + node.FillColor.ToArgb() + "</nodeFillColor>\r\n" +
                              "      <nodeHeight>" + node.Height + "</nodeHeight>\r\n" +
                              "      <nodeWidth>" + node.Width + "</nodeWidth>\r\n" +
                              "      <nodeX>" + node.X + "</nodeX>\r\n" +
                              "      <nodeY>" + node.Y + "</nodeY>\r\n" +
                              "      <nodeInCount>" + node.ConnectInCount + "</nodeInCount>\r\n" +
                              "      <nodeOutCount>" + node.ConnectOutCount + "</nodeOutCount>\r\n" +
                              "      <nodeInFlowTime>" + node.InFolwTime.ToString() + "</nodeInFlowTime>\r\n" +
                              "      <nodeOutFlowTime>" + node.OutFlowTime.ToString() + "</nodeOutFlowTime>\r\n" +
                              "      <nodeFunction><![CDATA[" + node.Function.Replace("<", "<") + "]]></nodeFunction>\r\n" +
                              "      <nodeOperationRole><![CDATA[" + node.OperationRole.Replace("<", "<") + "]]></nodeOperationRole>\r\n" +
                              "      <nodeFunctionInfo><![CDATA[" + node.FunctionInfo.Replace("<", "<") + "]]></nodeFunctionInfo>\r\n" +
                              "      <nodeInfo><![CDATA[" + node.Info.Replace("<", "<") + "]]></nodeInfo>\r\n" +
                              "    </node>\r\n";
            }
            controlXml += "  </arrNodeList>\r\n  <arrLineList>";

            string firstIndex = "";
            string secondIndex;

            for (int i = 0; i < arrLineList.Count; i++)
            {
                Line line = (Line)arrLineList[i];
                if (line.FirstNode != null)
                {
                    firstIndex = Convert.ToString(line.FirstNode.NodeListIndex);
                }
                else
                {
                    firstIndex = "null";
                }
                if (line.SecondNode != null)
                {
                    secondIndex = Convert.ToString(line.SecondNode.NodeListIndex);
                }
                else
                {
                    secondIndex = "null";
                }

                if (line.LineNodeCount == 4)
                {
                    controlXml += "    <line lineID='" + line.LineListIndex + "' lineType='" + (int)line.ObjectType + "'>\r\n" +
                                  "      <X0>" + line.X0 + "</X0>\r\n" +
                                  "      <Y0>" + line.Y0 + "</Y0>\r\n" +
                                  "      <X1>" + line.X1 + "</X1>\r\n" +
                                  "      <Y1>" + line.Y1 + "</Y1>\r\n";
                }
                else if (line.LineNodeCount == 8)
                {
                    controlXml += "    <line lineID='" + line.LineListIndex + "' lineType='" + (int)line.ObjectType + "'>\r\n" +
                                  "      <X0>" + line.X0 + "</X0>\r\n" +
                                  "      <Y0>" + line.Y0 + "</Y0>\r\n" +
                                  "      <X1>" + line.X1 + "</X1>\r\n" +
                                  "      <Y1>" + line.Y1 + "</Y1>\r\n" +
                                  "      <X2>" + line.X2 + "</X2>\r\n" +
                                  "      <Y2>" + line.Y2 + "</Y2>\r\n" +
                                  "      <X3>" + line.X3 + "</X3>\r\n" +
                                  "      <Y3>" + line.Y3 + "</Y3>\r\n";
                }
                controlXml += "      <lineNodeCount>" + line.LineNodeCount + "</lineNodeCount>\r\n" +
                              "      <lineFirstNode>" + firstIndex + "</lineFirstNode>\r\n" +
                              "      <lineSecondNode>" + secondIndex + "</lineSecondNode>\r\n" +
                              "      <lineFirstNodeIndex>" + line.FirNodeInterfaceIndex + "</lineFirstNodeIndex>\r\n" +
                              "      <lineSecondNodeIndex>" + line.SecNodeInterfaceIndex + "</lineSecondNodeIndex>\r\n" +
                              "      <lineSize>" + line.LineSize + "</lineSize>\r\n" +
                              "      <lineColor>" + line.LineColor.ToArgb() + "</lineColor>\r\n" +
                              "      <lineText><![CDATA[" + line.Content + "]]></lineText>\r\n" +
                              "    </line>\r\n";
            }
            controlXml += "  </arrLineList>\r\n  <arrStringList>";

            string contentTemp = "";

            for (int i = 0; i < arrStringList.Count; i++)
            {
                DrawString ds = (DrawString)arrStringList[i];
                contentTemp = "<![CDATA[" + ds.Content.Replace("<", "<") + "]]>\r\n";
                controlXml += "    <textString textID='" + ds.DrawStrListIndex + "'>\r\n" +
                              "      <textContent>" + contentTemp + "</textContent>\r\n" +
                              "      <textX>" + ds.X + "</textX>\r\n" +
                              "      <textY>" + ds.Y + "</textY>\r\n" +
                              "      <textHeight>" + ds.Height + "</textHeight>\r\n" +
                              "      <textWidth>" + ds.Width + "</textWidth>\r\n" +
                              "      <textColor>" + ds.DSTextColor.ToArgb() + "</textColor>\r\n" +
                              "      <textFontName>" + ds.DSTextFont.Name + "</textFontName>\r\n" +
                              "      <textFontSize>" + ds.DSTextFont.Size + "</textFontSize>\r\n" +
                              "    </textString>\r\n";
            }
            controlXml += "  </arrStringList>\r\n";
            controlXml += "</WorkFlow>";
            return(controlXml);
        }
示例#3
0
		/// <summary>
		/// 区域选择的元素归纳
		/// </summary>
		/// <param name="x">区域的开始横坐标</param>
		/// <param name="y">区域的开始纵坐标</param>
		/// <param name="width">区域的宽度</param>
		/// <param name="height">区域的长度</param>
		public void RegionSelect(int x,int y,int width,int height)
		{
			this.arrLineSelectList.Clear();
			this.arrNodeSelectList.Clear();
			this.arrDrawStringSelectList.Clear();
			this.arrLineNotSelectList.Clear();
			this.arrNodeNotSelectList.Clear();
			this.arrDrawStringNotSelectList.Clear();
			Line line;
			Node node;
			DrawString drawString;
			for(int i=0;i<this.arrLineList.Count;i++)
			{
				line=(Line)this.arrLineList[i];
				if(((x<line.X0 && line.X0<x+width)&&(y<line.Y0 &&  line.Y0<y+height))||((x<line.X1 && line.X1<x+width)&&(y<line.Y1 &&  line.Y1<y+height)))
				{
					this.arrLineSelectList.Add(line);
				}
				else
				{
					this.arrLineNotSelectList.Add(line);
				}
			}

			for(int i=0;i<this.arrNodeList.Count;i++)
			{
				node=(Node)this.arrNodeList[i];
				if(((x<node.X && node.X<x+width)&&(y<node.Y &&  node.Y<y+height))||((x<node.X+node.Width && node.X+node.Width<x+width)&&(y<node.Y &&  node.Y<y+height))||((x<node.X && node.X<x+width)&&(y<node.Y+node.Height &&  node.Y+node.Height<y+height))||((x<node.X+node.Width && node.X+node.Width<x+width)&&(y<node.Y+node.Height&&  node.Y+node.Height<y+height)))
				{
					this.arrNodeSelectList.Add(node);
				}
				else
				{
					this.arrNodeNotSelectList.Add(node);
				}
			}

			for(int i=0;i<this.arrDrawStringList.Count;i++)
			{
				drawString=(DrawString)this.arrDrawStringList[i];
				if(((x<drawString.X && drawString.X<x+width)&&(y<drawString.Y &&  drawString.Y<y+height))||((x<drawString.X+drawString.Width && drawString.X+drawString.Width<x+width)&&(y<drawString.Y &&  drawString.Y<y+height))||((x<drawString.X && drawString.X<x+width)&&(y<drawString.Y+drawString.Height &&  drawString.Y+drawString.Height<y+height))||((x<drawString.X+drawString.Width && drawString.X+drawString.Width<x+width)&&(y<drawString.Y+drawString.Height&&  drawString.Y+drawString.Height<y+height)))
				{
					this.arrDrawStringSelectList.Add(drawString);
				}
				else
				{
					this.arrDrawStringNotSelectList.Add(drawString);
				}
			}
		}
		/// <summary>
		/// 全部选择
		/// </summary>
		public void SelectAll()
		{
			if(this.lineSelectLine!=null || this.lineThisLine!=null || this.nodeSelectNode!=null || this.nodeThisNode!=null || this.drawStringThisDS!=null || this.drawStringSelectDS!=null)
			{
				return;
			}
			if(this.TBDrawStringContent!=null || this.TBLineContent!=null || this.TBnodeContent !=null)
			{
				this.InputContentEnter();
			}
			this.bSelectAll=true;
			this.lastEdit=null;
			this.AttriShow();
			this.control.Invalidate();
		}

		#endregion

		#region 删除元素
		/// <summary>
		/// 删除所有元素
		/// </summary>
		public void DeleteAll()
		{
			if(this.lineThisLine!=null || this.nodeThisNode!=null || this.drawStringThisDS!=null || this.lineSelectLine!=null || this.nodeSelectNode!=null || this.drawStringSelectDS!=null || this.lineTempLine!=null || this.nodeTempNode!=null || this.TBDrawStringContent.Visible!=false || this.TBnodeContent.Visible!=false)
			{
				return;
			}
			this.arrLineList.Clear();
			this.arrNodeList.Clear();
			this.arrDrawStringList.Clear();
			this.arrLineSelectList.Clear();
			this.arrNodeSelectList.Clear();
			this.arrDrawStringSelectList.Clear();
			this.arrLineNotSelectList.Clear();
			this.arrNodeNotSelectList.Clear();
			this.arrDrawStringNotSelectList.Clear();
			this.bSelectAllReday=false;
			this.bStartFlag=false;
			this.bEndFlag=false;
			this.i_GeneralCount=0;
			this.lastEdit=null;
			this.AttriShow();
			ReflashNodeIn_OutNodeID();
			GetTableList();
			this.reDrawBitmap(this.graDrawPanel,10,10);
			this.RefreshBackground();
			this.control.Invalidate();
			GC.Collect();
		}
		/// <summary>
		/// 删除区域选择的元素
		/// </summary>
		public void DeleteSelectRegion()
		{
			Line line;
			Node node;
			DrawString drawString;
			for(int i=0;i<this.arrLineSelectList.Count;i++)
			{
				line=((Line)this.arrLineSelectList[i]);
				this.arrLineList.Remove(line);
				this.FlashArrayList(0);

			}

			for(int i=0;i<this.arrNodeSelectList.Count;i++)
			{
				node=(Node)this.arrNodeSelectList[i];
				if(node.ObjectType==Node.DrawObjectType.DrawNodeBegin)
				{
					this.bStartFlag=false;
				}
				else if(node.ObjectType==Node.DrawObjectType.DrawNodeEnd)
				{
					this.bEndFlag=false;
				}
				else if(node.ObjectType==Node.DrawObjectType.DrawNodeGeneral)
				{
					this.i_GeneralCount--;
				}
				this.DelLineNode(node);	
				this.arrNodeList.Remove(node);
				this.FlashArrayList(1);
			}
				
			for(int i=0;i<this.arrDrawStringSelectList.Count;i++)
			{
				drawString=(DrawString)this.arrDrawStringSelectList[i];
				this.arrDrawStringList.Remove(drawString);
				this.FlashArrayList(2);
			}
			this.arrLineSelectList.Clear();
			this.arrNodeSelectList.Clear();
			this.arrDrawStringSelectList.Clear();
			this.arrLineNotSelectList.Clear();
			this.arrNodeNotSelectList.Clear();
			this.arrDrawStringNotSelectList.Clear();
			this.lastEdit=null;
			this.AttriShow();
			ReflashNodeIn_OutNodeID();
			GetTableList();
			this.reDrawBitmap(this.graDrawPanel,10,10);
			this.RefreshBackground();
			this.control.Invalidate();
		}
		/// <summary>
		/// 删除选定的元素
		/// </summary>
		public void DeleteSelectElement()//删除选中的元素
		{
			if(this.lineThisLine!=null || this.nodeThisNode!=null || this.drawStringThisDS!=null || this.lineSelectLine!=null || this.nodeSelectNode!=null || this.drawStringSelectDS!=null || this.lineTempLine!=null || this.nodeTempNode!=null || this.drawStringTempDS!=null)
			{
				return;
			}
			if(this.TBDrawStringContent.Visible==true)
			{
				this.TBDrawStringContent.Text="";
				return;
			}
			else if(this.TBLineContent.Visible==true)
			{
				this.TBLineContent.Text="";
				return;
			}
			else if(this.TBnodeContent.Visible==true)
			{	
				this.TBnodeContent.Text="";
				return;
			}
			Object objectEle=this.lastEdit;
			if(this.bSelectAllReday)
			{
				this.DeleteAll();
			}
			else if(this.bSelectRectangleReday)
			{
				this.DeleteSelectRegion();
			}
			else 
			{
				if(objectEle is Line)
				{
					this.arrLineList.Remove((Line)objectEle);
					this.FlashArrayList(0);
								ReflashNodeIn_OutNodeID();
					GetTableList();
				}
				else if(objectEle is Node)
				{
					if(this.TBnodeContent.Visible==true)
					{
						return;
					}
					this.arrNodeList.Remove((Node)objectEle);
					if(((Node)objectEle).ObjectType==Node.DrawObjectType.DrawNodeBegin)
					{
						this.bStartFlag=false;
					}
					else if(((Node)objectEle).ObjectType==Node.DrawObjectType.DrawNodeEnd)
					{
						this.bEndFlag=false;
					}			
					else if(((Node)objectEle).ObjectType==Node.DrawObjectType.DrawNodeGeneral)
					{
						this.i_GeneralCount--;
					}
					this.FlashArrayList(1);
					this.DelLineNode((Node)objectEle);
								ReflashNodeIn_OutNodeID();
					GetTableList();
				}
				else if(objectEle is DrawString)
				{
					if(this.TBDrawStringContent.Visible==true)
					{
						return;
					}
					this.arrDrawStringList.Remove((DrawString)objectEle);
					this.FlashArrayList(2);				
				}
				this.objPrepareDel=null;
				this.lastEdit=null;
				this.AttriShow();
				this.reDrawBitmap(this.graDrawPanel,10,10);
				this.ReflashNodeIn_OutNodeID();
				this.RefreshBackground();
				this.control.Invalidate();
			}
		}

		/// <summary>
		///清除连接到某一节点上的线 的连接
		/// </summary>
		/// <param name="node">节点</param>
		public void DelLineNode(Node node)
		{
			Line line;
			for(int i=0;i<this.arrLineList.Count;i++)
			{
				line=(Line)this.arrLineList[i];
				if(line.FirstNode==node)
				{
					line.FirstNode.ConnectOutCount--;
					line.FirstNode=null;
					line.FirNodeInterfaceIndex=9;
				}
				if(line.SecondNode==node)
				{
					line.SecondNode.ConnectInCount--;
					line.SecondNode=null;
					line.SecNodeInterfaceIndex=9;
				}
			}
		}

		#endregion

		#region 其他
		/// <summary>
		/// 线,节点,写字板上的内容输入结束的处理
		/// </summary>
		public void InputContentEnter()
		{
			if(this.TBDrawStringContent.Visible==true)
			{
				if(this.lastEdit is DrawString)
				{
					((DrawString)this.lastEdit).Content=this.TBDrawStringContent.Text;
					this.TBDrawStringContent.Visible=false;
					this.reDrawBitmap(this.graDrawPanel,10,10);
					this.RefreshBackground();
					//					this.control.Invalidate();
				}
			}
			else if(this.TBnodeContent.Visible==true)
			{
				if(this.lastEdit is Node)
				{
					((Node)this.lastEdit).NodeText=this.TBnodeContent.Text;
					this.TBnodeContent.Visible=false;
					this.reDrawBitmap(this.graDrawPanel,10,10);
					this.RefreshBackground();
					//					this.control.Invalidate();
				}				
			}
			else if(this.TBLineContent.Visible==true)
			{
				if(this.lastEdit is Line)
				{
					((Line)this.lastEdit).Content=this.TBLineContent.Text;
					this.TBLineContent.Visible=false;
					this.reDrawBitmap(this.graDrawPanel,10,10);
					this.RefreshBackground();
				}				
			}
		}		

		/// <summary>
		/// 区域选择的时候只选中一个元素
		/// </summary>
		public void ifSelectAngle()
		{
			if(this.arrLineSelectList.Count+this.arrNodeSelectList.Count+this.arrDrawStringSelectList.Count==1)
			{
				if(this.arrLineSelectList.Count==1)
				{
					this.lastEdit=(Line)this.arrLineSelectList[0];
					this.AttriShow();
					//					this.lineSelectLine=(Line)this.arrLineSelectList[0];
					return;
				}
				else if(this.arrNodeSelectList.Count==1)
				{
					this.lastEdit=(Node)this.arrNodeSelectList[0];
					this.AttriShow();
					//					this.nodeSelectNode=(Node)this.arrNodeSelectList[0];
					return;
				}
				else if(this.arrDrawStringSelectList.Count==1)
				{
					this.lastEdit=(DrawString)this.arrDrawStringSelectList[0];
					this.AttriShow();
					//					this.drawStringSelectDS=(DrawString)this.arrDrawStringSelectList[0];
					return;
				}
			}
			else		
			{
				this.lastEdit=null;
				this.AttriShow();
			}
		}

		/// <summary>
		/// 刷新所有节点内的流入流出节点的ID
		/// </summary>
		public void ReflashNodeIn_OutNodeID()
		{
			for(int i=0;i<this.arrNodeList.Count;i++)
			{
				Node node=(Node)this.arrNodeList[i];
				node.InFlowNodeID.Clear();
				node.OutFlowNodeID.Clear();
			}
			for(int i=0;i<this.arrLineList.Count;i++)
			{
				Line line=(Line)this.arrLineList[i];
				if(line.FirstNode!=null && line.SecondNode!=null)
				{
					line.FirstNode.OutFlowNodeID.Add(line.SecondNode.NodeListIndex);
					line.SecondNode.InFlowNodeID.Add(line.FirstNode.NodeListIndex);
				}
			}
		}

		/// <summary>
		/// 记录正在编辑的元素
		/// </summary>
		public void MemThisObject()
		{
			if(this.lineThisLine!=null)
			{
				this.obj_SeriesDrawEle=this.lineThisLine;
			}
			else if(this.nodeThisNode!=null)
			{
				this.obj_SeriesDrawEle=this.nodeThisNode;
			}
			else if(this.drawStringThisDS!=null)
			{
				this.obj_SeriesDrawEle=this.drawStringThisDS;
			}
		}
		/// <summary>
		/// 清除编辑的元素
		/// </summary>
		public void ClearThisObject()
		{
			this.obj_SeriesDrawEle=null;
			this.control.Cursor=Cursors.Default;
		}
		/// <summary>
		/// 显示鼠标的样式
		/// </summary>
		public void ShowCursor()
		{
			if(this.obj_SeriesDrawEle!=null)
			{
				if(this.obj_SeriesDrawEle is Line)
				{
					if(((Line)this.obj_SeriesDrawEle).ObjectType==Line.DrawObjectType.DrawBeeLine)
					{
						this.control.Cursor=this.getTypeCursor.GetCursor(GetTypeCursor.DrawType.BeeLine);
						return;
					}
					else
					{
						this.control.Cursor=this.getTypeCursor.GetCursor(GetTypeCursor.DrawType.FoldLine);
						return;
					}					
				}
				else if(this.obj_SeriesDrawEle is Node)
示例#4
0
				{
					this.SetNodeCursor(((Node)this.obj_SeriesDrawEle).ObjectType);
					return;
				}
				else if(this.obj_SeriesDrawEle is DrawString)
				{
					this.control.Cursor=this.getTypeCursor.GetCursor(GetTypeCursor.DrawType.String);
					return;
				}
				return;
			}
			else if(this.lineThisLine!=null || this.nodeThisNode!=null || this.drawStringThisDS!=null)
			{
				if(this.lineThisLine!=null)
				{
					if(this.lineThisLine.ObjectType==Line.DrawObjectType.DrawBeeLine)
					{
						this.control.Cursor=this.getTypeCursor.GetCursor(GetTypeCursor.DrawType.BeeLine);
						return;
					}
					else
					{
						this.control.Cursor=this.getTypeCursor.GetCursor(GetTypeCursor.DrawType.FoldLine);
						return;
					}	
				}
				else if(this.nodeThisNode!=null)
				{
					this.SetNodeCursor(this.nodeThisNode.ObjectType);
					return;
				}
				else if(this.drawStringThisDS!=null)
				{
					this.control.Cursor=this.getTypeCursor.GetCursor(GetTypeCursor.DrawType.String);
					return;
				}
			}
			this.control.Cursor=Cursors.Default;
		}
		/// <summary>
		/// 元素的完整性检查
		/// </summary>
		public bool CheckIntegrity()
		{
			if(!this.bStartFlag)
			{
				MessageForm.Show("您没有创建开始节点.","DrawFlow");
				return false;					
			}
			else if(!this.bEndFlag)
			{
				MessageForm.Show("您没有创建结束节点.","DrawFlow");
				return false;						
			}
			for(int i=0;i<this.arrNodeList.Count;i++)
			{
				Node node=(Node)this.arrNodeList[i];
				if(node.ObjectType==Node.DrawObjectType.DrawNodeBegin)
				{
					if(node.ConnectOutCount<1)
					{
						MessageForm.Show("开始结点未有后继结点.","DrawFlow");
						return false;
					}
				}
				else if(node.ObjectType==Node.DrawObjectType.DrawNodeEnd)
				{
					if(node.ConnectInCount<1)
					{
						MessageForm.Show("结束结点未有前驱结点.","DrawFlow");
						return false;
					}					
				}
				else if(node.ObjectType==Node.DrawObjectType.DrawNodeGeneral)
				{
					if(node.ConnectInCount<1)
					{
						MessageForm.Show("结点ID为"+node.NodeListIndex+"的任务结点未有前驱结点.","DrawFlow");
						return false;
					}
					if(node.ConnectOutCount<1)
					{
						MessageForm.Show("结点ID为"+node.NodeListIndex+"的任务结点未有后继结点.","DrawFlow");
						return false;
					}
				}
				else if(node.ObjectType==Node.DrawObjectType.DrawSpecificallyOperation)
				{
					if(node.ConnectInCount<1)
					{
						MessageForm.Show("结点ID为"+node.NodeListIndex+"的特定操作结点未有前驱结点.","DrawFlow");
						return false;
					}
				}
				else if(node.ObjectType==Node.DrawObjectType.DrawGradation)
				{
					if(node.ConnectInCount<1)
					{
						MessageForm.Show("结点ID为"+node.NodeListIndex+"的顺序结点未有前驱结点.","DrawFlow");
						return false;
					}
					if(node.ConnectOutCount<1)
					{
						MessageForm.Show("结点ID为"+node.NodeListIndex+"的顺序结点未有后继结点.","DrawFlow");
						return false;
					}
				}
				else if(node.ObjectType==Node.DrawObjectType.DrawSynchronization)
				{
					if(node.ConnectInCount<1)
					{
						MessageForm.Show("结点ID为"+node.NodeListIndex+"的同步结点未有前驱结点.","DrawFlow");
						return false;
					}
					if(node.ConnectOutCount<1)
					{
						MessageForm.Show("结点ID为"+node.NodeListIndex+"的同步结点未有后继结点.","DrawFlow");
						return false;
					}
				}
				else if(node.ObjectType==Node.DrawObjectType.DrawAsunder)
				{
					if(node.ConnectInCount<1)
					{
						MessageForm.Show("结点ID为"+node.NodeListIndex+"的分支结点未有前驱结点.","DrawFlow");
						return false;
					}
					if(node.ConnectOutCount<1)
					{
						MessageForm.Show("结点ID为"+node.NodeListIndex+"的分支结点未有后继结点.","DrawFlow");
						return false;
					}
				}
				else if(node.ObjectType==Node.DrawObjectType.DrawConverge)
				{
					if(node.ConnectInCount<1)
					{
						MessageForm.Show("结点ID为"+node.NodeListIndex+"的汇聚结点未有前驱结点.","DrawFlow");
						return false;
					}
					if(node.ConnectOutCount<1)
					{
						MessageForm.Show("结点ID为"+node.NodeListIndex+"的汇聚结点未有后继结点.","DrawFlow");
						return false;
					}
				}
				else if(node.ObjectType==Node.DrawObjectType.DrawGather)
				{
					if(node.ConnectInCount<1)
					{
						MessageForm.Show("结点ID为"+node.NodeListIndex+"的汇总连接结点未有前驱结点.","DrawFlow");
						return false;
					}
					if(node.ConnectOutCount<1)
					{
						MessageForm.Show("结点ID为"+node.NodeListIndex+"的汇总连接结点未有后继结点.","DrawFlow");
						return false;
					}
				}
				else if(node.ObjectType==Node.DrawObjectType.DrawJudgement)
				{
					if(node.ConnectInCount<1)
					{
						MessageForm.Show("结点ID为"+node.NodeListIndex+"的判断结点未有前驱结点.","DrawFlow");
						return false;
					}
					if(node.ConnectOutCount<1)
					{
						MessageForm.Show("结点ID为"+node.NodeListIndex+"的判断结点未有后继结点.","DrawFlow");
						return false;
					}
				}
				else if(node.ObjectType==Node.DrawObjectType.DrawDataNode)
				{
					if(node.ConnectOutCount<1)
					{
						MessageForm.Show("结点ID为"+node.NodeListIndex+"的应用数据结点未有后继结点.","DrawFlow");
						return false;
					}
				}
			}
			return true;
		}
		/// <summary>
		/// 
		/// </summary>
		public void MinMoveElement(System.Windows.Forms.Keys key)
		{
			if(this.lastEdit is Line)
			{
				this.line_OperationTemp=(Line)this.lastEdit;
				switch(key)
				{
					case Keys.Up:
					{
						this.line_OperationTemp.Y0--;
						this.line_OperationTemp.Y1--;
						if(this.line_OperationTemp.ObjectType==Line.DrawObjectType.DrawFoldLine)
						{
							this.line_OperationTemp.Y2--;
							this.line_OperationTemp.Y3--;
						}
						break;
					}
					case Keys.Down:
					{
						this.line_OperationTemp.Y0++;
						this.line_OperationTemp.Y1++;
						if(this.line_OperationTemp.ObjectType==Line.DrawObjectType.DrawFoldLine)
						{
							this.line_OperationTemp.Y2++;
							this.line_OperationTemp.Y3++;
						}
						break;
					}
					case Keys.Right:
					{
						this.line_OperationTemp.X0++;
						this.line_OperationTemp.X1++;
						if(this.line_OperationTemp.ObjectType==Line.DrawObjectType.DrawFoldLine)
						{
							this.line_OperationTemp.X2++;
							this.line_OperationTemp.X3++;
						}
						break;					
					}
					case Keys.Left:
					{
						this.line_OperationTemp.X0--;
						this.line_OperationTemp.X1--;
						if(this.line_OperationTemp.ObjectType==Line.DrawObjectType.DrawFoldLine)
						{
							this.line_OperationTemp.X2--;
							this.line_OperationTemp.X3--;
						}
						break;
					}
				}
				this.MinLineMoveRoundNode(this.line_OperationTemp,0);
				if(this.line_OperationTemp.ObjectType==Line.DrawObjectType.DrawBeeLine)
				{
					this.MinLineMoveRoundNode(this.line_OperationTemp,1);
				}
				else
				{
					this.MinLineMoveRoundNode(this.line_OperationTemp,3);
				}				
				this.reDrawBitmap(this.graDrawPanel,10,10);
				this.RefreshBackground();
			}
			else if(this.lastEdit is Node)
			{
				this.node_OperationTemp=(Node)this.lastEdit;
				int iMoveWidth=0,iMoveHeight=0;
				switch(key)
				{
					case Keys.Up:this.node_OperationTemp.Y--;iMoveWidth=0;iMoveHeight=-1;break;
					case Keys.Down:this.node_OperationTemp.Y++;iMoveWidth=0;iMoveHeight=1;break;
					case Keys.Right:this.node_OperationTemp.X++;iMoveWidth=1;iMoveHeight=0;break;
					case Keys.Left:this.node_OperationTemp.X--;iMoveWidth=-1;iMoveHeight=0;break;
				}
				this.GetConnectNodeLine(this.node_OperationTemp);
				if(this.arrLineConnectNode.Count>0)
				{
					Line line;
					for(int i=0;i<this.arrLineConnectNode.Count;i++)//使连接到该节点的线也转变
					{
						line=((Line)this.arrLineConnectNode[i]);
						if(line.FirstNode==	this.node_OperationTemp)
						{
							if(line.ObjectType==Line.DrawObjectType.DrawBeeLine)
							{
								line.X0+=iMoveWidth;
								line.Y0+=iMoveHeight;
							}
							else
							{
								this.iNodeX=this.node_OperationTemp.X;
								this.iNodeY=this.node_OperationTemp.Y;
								this.iNodeWidth=this.node_OperationTemp.Width;
								this.iNodeHeight=this.node_OperationTemp.Height;								
								this.MoveNodeChangeLine(line,0,this.node_OperationTemp,line.FirNodeInterfaceIndex);
							}
						}
						if(line.SecondNode==this.node_OperationTemp)
						{
							if(line.ObjectType==Line.DrawObjectType.DrawBeeLine)
							{
								line.X1+=iMoveWidth;
								line.Y1+=iMoveHeight;
							}
							else
							{
								this.iNodeX=this.node_OperationTemp.X;
								this.iNodeY=this.node_OperationTemp.Y;
								this.iNodeWidth=this.node_OperationTemp.Width;
								this.iNodeHeight=this.node_OperationTemp.Height;
								this.MoveNodeChangeLine(line,3,this.node_OperationTemp,line.SecNodeInterfaceIndex);
							}
						}
					}
				}				
				this.reDrawBitmap(this.graDrawPanel,10,10);
				this.RefreshBackground();
			}
			else if(this.lastEdit is DrawString)
			{
				this.ds_OperationTemp=(DrawString)this.lastEdit;
				switch(key)
				{
					case Keys.Up:this.ds_OperationTemp.Y--;break;
					case Keys.Down:this.ds_OperationTemp.Y++;break;
					case Keys.Right:this.ds_OperationTemp.X++;break;
					case Keys.Left:this.ds_OperationTemp.X--;break;
				}
				this.reDrawBitmap(this.graDrawPanel,10,10);
				this.RefreshBackground();
			}
		}
 
		/// <summary>
		/// 检测是否可以绘制节点
		/// </summary>
		public void CheckCanDraw()
		{
			if(this.control.isNodeLimit)
			{
				if(nodeThisNode.ObjectType==Node.DrawObjectType.DrawNodeBegin && this.bStartFlag)
				{
					this.nodeThisNode=null;
					MessageForm.Show("对不起,开始节点创建受限制。","DrawFlow");
					return;
				}
				else if(nodeThisNode.ObjectType==Node.DrawObjectType.DrawNodeEnd && this.bEndFlag)
				{
					this.nodeThisNode=null;
					MessageForm.Show("对不起,结束节点创建受限制。","DrawFlow");
					return;
				}
				else if(this.i_GeneralCount>=20 && nodeThisNode.ObjectType==Node.DrawObjectType.DrawNodeGeneral)
				{
					this.nodeThisNode=null;
					MessageForm.Show("对不起,您目前选择的节点限制为20个.","DrawFlow");
					return;
				}
			}		
		} 

		/// <summary>
		/// 显示鼠标指针
		/// </summary>
		public void CursorsDefault()
		{
			this.lineThisLine=null;
			this.lineSelectLine=null;
			this.nodeThisNode=null;
			this.nodeSelectNode=null;
			this.drawStringThisDS=null;
			this.drawStringSelectDS=null;
			this.control.Cursor=Cursors.Default;
		} 
		#endregion

		#region 鼠标操作
		/// <summary>
		/// 点击鼠标右键操作
		/// </summary>
		/// <param name="e"></param>
		public void MouseDown_Right(System.Windows.Forms.MouseEventArgs e)
		{
			location.X=e.X;
			location.Y=e.Y;
			this.b_IsDownMouseRight=true;
			this.IsMouseOnAnyControl(e.X,e.Y);
			if(this.arrLineList.Count<=0 && this.arrNodeList.Count<=0 && this.arrDrawStringList.Count<=0)
			{
				this.control.menuItem1.Enabled=false;
				this.control.menuItem3.Enabled=false;
			}
			else
			{
				this.control.menuItem1.Enabled=true;
				this.control.menuItem3.Enabled=true;
			}
		}
		/// <summary>
		/// 鼠标按下事件
		/// </summary>
		/// <param name="e"></param>
		public void MouseDown(System.Windows.Forms.MouseEventArgs e)
		{
			if(this.TBDrawStringContent.Visible==true)
			{
				if(this.lastEdit is DrawString)
				{
					((DrawString)this.lastEdit).Content=this.TBDrawStringContent.Text;
					this.TBDrawStringContent.Visible=false;
					this.reDrawBitmap(this.graDrawPanel,10,10);
					this.RefreshBackground();
//					this.control.Invalidate();
				}
			}
			else if(this.TBnodeContent.Visible==true)
			{
				if(this.lastEdit is Node)
				{
					((Node)this.lastEdit).NodeText=this.TBnodeContent.Text;
					this.TBnodeContent.Visible=false;
					this.reDrawBitmap(this.graDrawPanel,10,10);
					this.RefreshBackground();
//					this.control.Invalidate();
				}				
			}
			else if(this.TBLineContent.Visible==true)
			{
				if(this.lastEdit is Line)
				{
					((Line)this.lastEdit).Content=this.TBLineContent.Text;
					this.TBLineContent.Visible=false;
					this.reDrawBitmap(this.graDrawPanel,10,10);
					this.RefreshBackground();
				}				
			}

			if(e.Button==MouseButtons.Left)
			{
				if(this.obj_SeriesDrawEle!=null && (this.lineThisLine==null && this.nodeThisNode==null && this.drawStringThisDS==null))
				{
					if(this.obj_SeriesDrawEle is Line)
					{
						this.lineThisLine=new Line(((Line)this.obj_SeriesDrawEle).ObjectType,this.arrLineList.Count);
						this.newLine=this.lineThisLine;
					}
					else if(this.obj_SeriesDrawEle is Node)
					{
						this.nodeThisNode=new Node(this.arrNodeList.Count,((Node)this.obj_SeriesDrawEle).ObjectType,getDefaultText(((Node)this.obj_SeriesDrawEle).ObjectType));
						this.newNode=this.nodeThisNode;
					}
					else if(this.obj_SeriesDrawEle is DrawString)
					{
						this.drawStringThisDS=new DrawString(this.arrDrawStringList.Count);
						this.newDrawString=this.drawStringThisDS;
					}
				}
				else if(this.obj_SeriesDrawEle!=null && (this.lineThisLine!=null || this.nodeThisNode!=null || this.drawStringThisDS!=null))
				{
					if(this.lineThisLine!=null)
					{
						this.obj_SeriesDrawEle=this.lineThisLine;
					}
					else if(this.nodeThisNode!=null)
					{
						this.CheckCanDraw();
						this.obj_SeriesDrawEle=this.nodeThisNode;
					}
					else if(this.drawStringThisDS!=null)
					{
						this.obj_SeriesDrawEle=this.drawStringThisDS;
					}
					this.ShowCursor();
				}

				if(this.bSelectAllReday)//是否已经全部选择
				{
					if(this.IsMouseOnAnyControl(e.X,e.Y))
					{
						this.control.Cursor=Cursors.SizeAll;
						this.iMouseInitX=e.X;
						this.iMouseInitY=e.Y;
						this.bSelectAll=true;
						this.DrawBackGround();
						this.RefreshBackground();
						this.bSelectRectangleReday=false;
						return;
					}
				}
				else if(this.lineThisLine!=null)//正在生成新线 ,当lineThisLine为null表示不在画线
				{
					this.arrLineList.Add(this.newLine);
					this.newLine=null;
					this.iLineFirstNodeX=e.X;
					this.iLineFirstNodeY=e.Y;
					this.selectPoint.LinePoint[0].X=e.X;
					this.selectPoint.LinePoint[0].Y=e.Y;
					this.lineThisLine.addPoint(this.iLineFirstNodeX,this.iLineFirstNodeY);
					this.lineThisLine.LineNodeCount=2;
					return;
				}
				else if(this.nodeThisNode!=null)//正在生成新节点 ,当nodeThisNode为null表示不在画节点
				{
					if(this.control.isNodeLimit)
					{
						if(nodeThisNode.ObjectType==Node.DrawObjectType.DrawNodeBegin && this.bStartFlag)
						{
							this.nodeThisNode=null;
							MessageForm.Show("对不起,开始节点创建受限制。","DrawFlow");
							return;
						}
						else if(nodeThisNode.ObjectType==Node.DrawObjectType.DrawNodeEnd && this.bEndFlag)
						{
							this.nodeThisNode=null;
							MessageForm.Show("对不起,结束节点创建受限制。","DrawFlow");
							return;
						}
						else if(this.i_GeneralCount>=20 && nodeThisNode.ObjectType==Node.DrawObjectType.DrawNodeGeneral)
						{
							this.nodeThisNode=null;
							MessageForm.Show("对不起,您目前选择的节点限制为20个.","DrawFlow");
							return;
						}
					}
					this.arrNodeList.Add(this.newNode);
					this.newNode=null;
					this.iNodeX=e.X;
					this.iNodeY=e.Y;
					this.iTempNodeX=e.X;
					this.iTempNodeY=e.Y;
					this.nodeThisNode.X=this.iNodeX;
					this.nodeThisNode.Y=this.iNodeY;
					return;
				}
				else if(this.drawStringThisDS!=null)//生成新写字板
				{
					this.arrDrawStringList.Add(this.newDrawString);
					this.newDrawString=null;
					this.iDrawStringX=e.X;
					this.iDrawStringY=e.Y;
					this.iTempDSX=e.X;
					this.iTempDSY=e.Y;
					this.drawStringThisDS.X=this.iDrawStringX;
					this.drawStringThisDS.Y=this.iDrawStringY;
					return;
				}
				else if(this.nodeTempNode!=null)
				{
					this.nodeSelectNode=this.nodeTempNode;
					this.nodeTempNode=null; 
					this.iMouseInitX=e.X;
					this.iMouseInitY=e.Y;

					this.iNodeX=this.nodeSelectNode.X;
					this.iNodeY=this.nodeSelectNode.Y;
					this.iNodeWidth=this.nodeSelectNode.Width;
					this.iNodeHeight=this.nodeSelectNode.Height;

					this.GetConnectNodeLine(this.nodeSelectNode);
					this.selectPoint.SetRectanglePoint(this.iNodeX,this.iNodeY,this.iNodeWidth,this.iNodeHeight);
					if(this.arrLineConnectNode.Count!=0)//该节点上是否有线连接到  0表示没有线连接  其他值表示有count条线连接
					{//有线连接  让该节点成为活动节点  和  让所有连接的线成为活动线
						this.ReDrawBitmapNodeMove(this.graDrawPanel,this.nodeSelectNode.NodeListIndex);
					}
					else
					{//没有线连接  让该节点成为活动节点
						this.reDrawBitmap(this.graDrawPanel,0,this.nodeSelectNode.NodeListIndex);
					}
					this.bDrawConnectNodeLine=true;
					this.bDrawNode=true;
					this.RefreshBackground();
					//					this.control.Invalidate();
					return;
				}
				else if(this.drawStringTempDS!=null)
				{
					this.drawStringSelectDS=this.drawStringTempDS;
					this.drawStringTempDS=null;
					this.iMouseInitX=e.X;
					this.iMouseInitY=e.Y;

					this.iDrawStringX=this.drawStringSelectDS.X;
					this.iDrawStringY=this.drawStringSelectDS.Y;
					this.iDrawStringWidth=this.drawStringSelectDS.Width;
					this.iDrawStringHeight=this.drawStringSelectDS.Height;
					this.strDSContent=this.drawStringSelectDS.Content;
					this.selectPoint.SetRectanglePoint(this.iDrawStringX,this.iDrawStringY,this.iDrawStringWidth,this.iDrawStringHeight);
					this.reDrawBitmap(this.graDrawPanel,2,this.drawStringSelectDS.DrawStrListIndex);
					this.bDrawString=true;
					this.RefreshBackground();
					//					this.control.Invalidate();
					return;

				}
				else if(this.lineTempLine!=null)//鼠标在某条的变化点上
				{
					this.lineSelectLine=this.lineTempLine;
					this.iSelectNodeIndex=this.iTempNodeIndex;

					this.iLineFirstNodeX=this.lineSelectLine.GetLineNodeInfo(0);
					this.iLineFirstNodeY=this.lineSelectLine.GetLineNodeInfo(1);
					this.iLineSecondNodeX=this.lineSelectLine.GetLineNodeInfo(2);
					this.iLineSecondNodeY=this.lineSelectLine.GetLineNodeInfo(3);
					if(this.lineSelectLine.ObjectType==Line.DrawObjectType.DrawBeeLine)
					{
						this.selectPoint.SetLinePoint(this.iLineFirstNodeX,this.iLineFirstNodeY,this.iLineSecondNodeX,this.iLineSecondNodeY);
					}
					else
					{
						this.iLine3thNodeX=this.lineSelectLine.GetLineNodeInfo(4);
						this.iLine3thNodeY=this.lineSelectLine.GetLineNodeInfo(5);
						this.iLine4thNodeX=this.lineSelectLine.GetLineNodeInfo(6);
						this.iLine4thNodeY=this.lineSelectLine.GetLineNodeInfo(7);
						this.selectPoint.SetFlodLinePoint(this.lineSelectLine);
					}
					this.reDrawBitmap(this.graDrawPanel,1,this.lineSelectLine.LineListIndex);
					this.bDrawLine=true;
					this.RefreshBackground();
//					this.control.Invalidate();
					return;
				}						
				else 
				{
					if(this.bSelectRectangleReday)
					{
						if(this.IsMouseOnAnySelectControl(e.X,e.Y))
						{
							this.control.Cursor=Cursors.SizeAll;
							this.iMouseInitX=e.X;
							this.iMouseInitY=e.Y;
							this.ReDrawNotSelect(this.graDrawPanel);
							this.bDrawSelectElement=true;
							//							this.control.Invalidate();
							this.RefreshBackground();
示例#5
0
				if((LinePointIndex==1 || LinePointIndex==3))
				{
					return true;
				}
示例#6
0

        
示例#7
0
		#endregion
示例#8
0
			
示例#9
0
			//			this.getTypeImage=((GetTypeImage)formatter.Deserialize(stream));
			//			stream.Close();
示例#10
0
        /// <summary>
        /// 从服务器的XML文件中,获取流程图数组
        /// </summary>
        public void CreateArrDraw()
        {
            arrNodeList   = new ArrayList();
            arrLineList   = new ArrayList();
            arrStringList = new ArrayList();

            XmlDocument doc = new XmlDocument();

            doc.LoadXml(serverXml);

            //获取结点列表
            XmlNodeList nodeChilds = doc.SelectNodes("//arrNodeList//node");

            foreach (XmlNode node in nodeChilds)
            {
                XmlNodeList xnl      = node.ChildNodes;
                int         index    = Convert.ToInt32(node.Attributes.Item(0).InnerText);
                int         nodetype = Convert.ToInt32(node.Attributes.Item(1).InnerText);
                string      nodetext = xnl.Item(0).InnerText;
                Node        xmlnode  = new Node(index, (Node.DrawObjectType)nodetype, nodetext);
                string      fontname = xnl.Item(1).InnerText;
                int         fontSize = Convert.ToInt32(xnl.Item(2).InnerText);
                xmlnode.NodeTextFont    = new System.Drawing.Font(fontname, fontSize);
                xmlnode.TextSize        = fontSize;
                xmlnode.NodeTextColor   = System.Drawing.Color.FromArgb(int.Parse(xnl.Item(3).InnerText));
                xmlnode.BorderColor     = Color.FromArgb(int.Parse(xnl.Item(4).InnerText));
                xmlnode.FillColor       = Color.FromArgb(int.Parse(xnl.Item(5).InnerText));
                xmlnode.Height          = Convert.ToInt32(xnl.Item(6).InnerText);
                xmlnode.Width           = Convert.ToInt32(xnl.Item(7).InnerText);
                xmlnode.X               = Convert.ToInt32(xnl.Item(8).InnerText);
                xmlnode.Y               = Convert.ToInt32(xnl.Item(9).InnerText);
                xmlnode.ConnectInCount  = Convert.ToInt32(xnl.Item(10).InnerText);
                xmlnode.ConnectOutCount = Convert.ToInt32(xnl.Item(11).InnerText);
                xmlnode.InFolwTime      = Convert.ToDateTime(xnl.Item(12).InnerText);
                xmlnode.OutFlowTime     = Convert.ToDateTime(xnl.Item(13).InnerText);
                xmlnode.Function        = xnl.Item(14).InnerText;
                xmlnode.OperationRole   = xnl.Item(15).InnerText;
                xmlnode.FunctionInfo    = xnl.Item(16).InnerText;
                xmlnode.Info            = xnl.Item(17).InnerText;
                arrNodeList.Add(xmlnode);
            }

            //获取线列表
            XmlNodeList lineChilds = doc.SelectNodes("//arrLineList//line");

            foreach (XmlNode node in lineChilds)
            {
                XmlNodeList xnl = node.ChildNodes;

                int index    = Convert.ToInt32(node.Attributes.Item(0).InnerText);
                int lineType = Convert.ToInt32(node.Attributes.Item(1).InnerText);

                Line line = new Line((Line.DrawObjectType)lineType, index);
                line.X0 = Convert.ToInt32(xnl.Item(0).InnerText);
                line.Y0 = Convert.ToInt32(xnl.Item(1).InnerText);
                line.X1 = Convert.ToInt32(xnl.Item(2).InnerText);
                line.Y1 = Convert.ToInt32(xnl.Item(3).InnerText);

                if (lineType == 1)
                {
                    line.X2            = Convert.ToInt32(xnl.Item(4).InnerText);
                    line.Y2            = Convert.ToInt32(xnl.Item(5).InnerText);
                    line.X3            = Convert.ToInt32(xnl.Item(6).InnerText);
                    line.Y3            = Convert.ToInt32(xnl.Item(7).InnerText);
                    line.LineNodeCount = Convert.ToInt32(xnl.Item(8).InnerText);
                    if (xnl.Item(9).InnerText == "null")
                    {
                        line.FirstNode = null;
                    }
                    else
                    {
                        int firstIndex = Convert.ToInt32(xnl.Item(9).InnerText);
                        line.FirstNode = (Node)arrNodeList[firstIndex];
                    }

                    if (xnl.Item(10).InnerText == "null")
                    {
                        line.SecondNode = null;
                    }
                    else
                    {
                        int secondIndex = Convert.ToInt32(xnl.Item(10).InnerText);
                        line.SecondNode = (Node)arrNodeList[secondIndex];
                    }
                    line.FirNodeInterfaceIndex = Convert.ToInt32(xnl.Item(11).InnerText);
                    line.SecNodeInterfaceIndex = Convert.ToInt32(xnl.Item(12).InnerText);
                    line.LineSize  = Convert.ToInt32(xnl.Item(13).InnerText);
                    line.LineColor = System.Drawing.Color.FromArgb(int.Parse(xnl.Item(14).InnerText));
                    line.Content   = xnl.Item(15).InnerText;
                    arrLineList.Add(line);
                }
                else if (lineType == 0)
                {
                    line.LineNodeCount = Convert.ToInt32(xnl.Item(4).InnerText);
                    if (xnl.Item(5).InnerText == "null")
                    {
                        line.FirstNode = null;
                    }
                    else
                    {
                        line.FirstNode = (Node)arrNodeList[Convert.ToInt32(xnl.Item(5).InnerText)];
                    }
                    if (xnl.Item(6).InnerText == "null")
                    {
                        line.SecondNode = null;
                    }
                    else
                    {
                        line.SecondNode = (Node)arrNodeList[Convert.ToInt32(xnl.Item(6).InnerText)];
                    }
                    line.FirNodeInterfaceIndex = Convert.ToInt32(xnl.Item(7).InnerText);
                    line.SecNodeInterfaceIndex = Convert.ToInt32(xnl.Item(8).InnerText);
                    line.LineSize  = Convert.ToInt32(xnl.Item(9).InnerText);
                    line.LineColor = System.Drawing.Color.FromArgb(int.Parse(xnl.Item(10).InnerText));
                    line.Content   = xnl.Item(11).InnerText;
                    arrLineList.Add(line);
                }
            }

            //获取说明文字
            XmlNodeList textChilds = doc.SelectNodes("//arrStringList//textString");

            foreach (XmlNode node in textChilds)
            {
                XmlNodeList xnl = node.ChildNodes;

                int        index = Convert.ToInt32(node.Attributes.Item(0).InnerText);
                DrawString ds    = new DrawString(index);
                ds.Content     = xnl.Item(0).InnerText;
                ds.X           = Convert.ToInt32(xnl.Item(1).InnerText);
                ds.Y           = Convert.ToInt32(xnl.Item(2).InnerText);
                ds.Height      = Convert.ToInt32(xnl.Item(3).InnerText);
                ds.Width       = Convert.ToInt32(xnl.Item(4).InnerText);
                ds.DSTextColor = System.Drawing.Color.FromArgb(int.Parse(xnl.Item(5).InnerText));
                string fontName = xnl.Item(6).InnerText;
                int    fontSize = Convert.ToInt32(xnl.Item(7).InnerText);
                ds.DSTextFont = new System.Drawing.Font(fontName, fontSize);
                ds.TextSize   = fontSize;
                arrStringList.Add(ds);
            }
        }
示例#11
0
        /// <summary>
        /// �ӷ�������XML�ļ��У���ȡ����ͼ����
        /// </summary>
        public void CreateArrDraw()
        {
            arrNodeList=new ArrayList ();
            arrLineList=new ArrayList ();
            arrStringList=new ArrayList();

            XmlDocument doc=new XmlDocument ();
            doc.LoadXml(serverXml);

            //��ȡ����б�
            XmlNodeList nodeChilds=doc.SelectNodes("//arrNodeList//node");

            foreach (XmlNode node in nodeChilds)
            {
                XmlNodeList xnl=node.ChildNodes;
                int index=Convert.ToInt32(node.Attributes.Item(0).InnerText);
                int nodetype=Convert.ToInt32(node.Attributes.Item(1).InnerText);
                string nodetext=xnl.Item(0).InnerText;
                Node xmlnode=new Node (index,(Node.DrawObjectType)nodetype,nodetext);
                string fontname=xnl.Item(1).InnerText;
                int fontSize=Convert.ToInt32(xnl.Item(2).InnerText);
                xmlnode.NodeTextFont=new System.Drawing.Font (fontname,fontSize);
                xmlnode.TextSize=fontSize;
                xmlnode.NodeTextColor=System.Drawing.Color.FromArgb(int.Parse(xnl.Item(3).InnerText));
                xmlnode.BorderColor=Color.FromArgb(int.Parse(xnl.Item(4).InnerText));
                xmlnode.FillColor=Color.FromArgb(int.Parse(xnl.Item(5).InnerText));
                xmlnode.Height=Convert.ToInt32(xnl.Item(6).InnerText);
                xmlnode.Width=Convert.ToInt32(xnl.Item(7).InnerText);
                xmlnode.X=Convert.ToInt32(xnl.Item(8).InnerText);
                xmlnode.Y=Convert.ToInt32(xnl.Item(9).InnerText);
                xmlnode.ConnectInCount=Convert.ToInt32(xnl.Item(10).InnerText);
                xmlnode.ConnectOutCount=Convert.ToInt32(xnl.Item(11).InnerText);
                xmlnode.InFolwTime=Convert.ToDateTime(xnl.Item(12).InnerText);
                xmlnode.OutFlowTime=Convert.ToDateTime(xnl.Item(13).InnerText);
                xmlnode.Function=xnl.Item(14).InnerText;
                xmlnode.OperationRole=xnl.Item(15).InnerText;
                xmlnode.FunctionInfo=xnl.Item(16).InnerText;
                xmlnode.Info=xnl.Item(17).InnerText;
                arrNodeList.Add(xmlnode);
            }

            //��ȡ���б�
            XmlNodeList lineChilds=doc.SelectNodes("//arrLineList//line");
            foreach (XmlNode node in lineChilds)
            {
                XmlNodeList xnl=node.ChildNodes;

                int index=Convert.ToInt32(node.Attributes.Item(0).InnerText);
                int lineType=Convert.ToInt32(node.Attributes.Item(1).InnerText);

                Line line=new Line ((Line.DrawObjectType)lineType,index);
                line.X0=Convert.ToInt32(xnl.Item(0).InnerText);
                line.Y0=Convert.ToInt32(xnl.Item(1).InnerText);
                line.X1=Convert.ToInt32(xnl.Item(2).InnerText);
                line.Y1=Convert.ToInt32(xnl.Item(3).InnerText);

                if(lineType==1)
                {
                    line.X2=Convert.ToInt32(xnl.Item(4).InnerText);
                    line.Y2=Convert.ToInt32(xnl.Item(5).InnerText);
                    line.X3=Convert.ToInt32(xnl.Item(6).InnerText);
                    line.Y3=Convert.ToInt32(xnl.Item(7).InnerText);
                    line.LineNodeCount=Convert.ToInt32(xnl.Item(8).InnerText);
                    if(xnl.Item(9).InnerText=="null")
                    {
                        line.FirstNode=null;
                    }
                    else
                    {
                        int firstIndex=Convert.ToInt32(xnl.Item(9).InnerText);
                        line.FirstNode=(Node)arrNodeList[firstIndex];
                    }

                    if(xnl.Item(10).InnerText=="null")
                    {
                        line.SecondNode=null;
                    }
                    else
                    {
                        int secondIndex=Convert.ToInt32(xnl.Item(10).InnerText);
                        line.SecondNode=(Node)arrNodeList[secondIndex];
                    }
                    line.FirNodeInterfaceIndex=Convert.ToInt32(xnl.Item(11).InnerText);
                    line.SecNodeInterfaceIndex=Convert.ToInt32(xnl.Item(12).InnerText);
                    line.LineSize=Convert.ToInt32(xnl.Item(13).InnerText);
                    line.LineColor=System.Drawing.Color.FromArgb(int.Parse(xnl.Item(14).InnerText));
                    line.Content=xnl.Item(15).InnerText;
                    arrLineList.Add(line);
                }
                else if(lineType==0)
                {
                    line.LineNodeCount=Convert.ToInt32(xnl.Item(4).InnerText);
                    if(xnl.Item(5).InnerText=="null")
                    {
                        line.FirstNode=null;
                    }
                    else
                    {
                        line.FirstNode=(Node)arrNodeList[Convert.ToInt32(xnl.Item(5).InnerText)];
                    }
                    if(xnl.Item(6).InnerText=="null")
                    {
                        line.SecondNode=null;
                    }
                    else
                    {
                        line.SecondNode=(Node)arrNodeList[Convert.ToInt32(xnl.Item(6).InnerText)];
                    }
                    line.FirNodeInterfaceIndex=Convert.ToInt32(xnl.Item(7).InnerText);
                    line.SecNodeInterfaceIndex=Convert.ToInt32(xnl.Item(8).InnerText);
                    line.LineSize=Convert.ToInt32(xnl.Item(9).InnerText);
                    line.LineColor=System.Drawing.Color.FromArgb(int.Parse(xnl.Item(10).InnerText));
                    line.Content=xnl.Item(11).InnerText;
                    arrLineList.Add(line);

                }

            }

            //��ȡ˵������
            XmlNodeList textChilds=doc.SelectNodes("//arrStringList//textString");
            foreach (XmlNode node in textChilds)
            {
                XmlNodeList xnl=node.ChildNodes;

                int index=Convert.ToInt32(node.Attributes.Item(0).InnerText);
                DrawString ds=new DrawString (index);
                ds.Content=xnl.Item(0).InnerText;
                ds.X=Convert.ToInt32(xnl.Item(1).InnerText);
                ds.Y=Convert.ToInt32(xnl.Item(2).InnerText);
                ds.Height=Convert.ToInt32(xnl.Item(3).InnerText );
                ds.Width=Convert.ToInt32(xnl.Item(4).InnerText);
                ds.DSTextColor=System.Drawing.Color.FromArgb(int.Parse(xnl.Item(5).InnerText));
                string fontName=xnl.Item(6).InnerText;
                int fontSize=Convert.ToInt32(xnl.Item(7).InnerText);
                ds.DSTextFont=new System.Drawing.Font (fontName,fontSize);
                ds.TextSize=fontSize;
                arrStringList.Add(ds);

            }
        }