예제 #1
0
파일: Form2.cs 프로젝트: MatthewNg3416/SFIS
 /**
  *     拖拽后更新状态和处理的位置。
  *     :param   MouseEventArgs   e   鼠标事件
  *     :param   FlowStatus   objStatus   状态对象
  * <br> 处理步骤如下:
  * <br> 确定托拽后的新坐标
  * <br> 判定新状态是否在面板坐标内,如果不在,将其改变在面板内。
  * <br> 更新状态的新位置
  * <br> 更新与状态关联的处理的新位置。
  **/
 public void updateLocation(MouseEventArgs e, FlowStatus objStatus)
 {
     objStatus.setLocation(e.X, e.Y);
     //this.checkStatus(objStatus);//节点是否在画板内,省略
     int    PosX        = objStatus._x + Convert.ToInt32(objStatus._w / 2);
     int    PosY        = objStatus._y + Convert.ToInt32(objStatus._h / 2);
     double dblStatusId = objStatus.dblStatusId;
 }
예제 #2
0
파일: Form2.cs 프로젝트: MatthewNg3416/SFIS
        /// <summary>
        /// 鼠标事件触发时画图的处理,
        /// intEvent等于1.代表鼠标按下.intEvent等于2.代表鼠标移动.intEvent等于3.代表鼠标松开;
        /// 处理步骤如下:
        ///*<br> intEvent等于1,鼠标按下时如果鼠标的坐标在某状态内,更新状态的last_x,last_y坐标(用来在以移动后更新状态坐标位置)
        ///* 该状态可以移动
        ///*<br> intEvent等于2,如果状态可以移动,更新状态位置
        ///*<br> intEvent等于3,如果状态可以移动,更新状态位置,设置该状态为不能移动。
        /// </summary>
        /// <param name="ex">鼠标事件</param>
        /// <param name="intEvent">鼠标事件类型</param>
        public void drawMouseObjs(MouseEventArgs ex, int intEvent)
        {
            FlowStatus objStatus = this.gStatus;

            switch (intEvent)
            {
            case 1:                                 //mouseDown()
                if (objStatus.contains(ex.X, ex.Y)) //按下的鼠标坐标在节点的范围内。
                {
                    Graphics g = this.CreateGraphics();
                    objStatus.last_x = objStatus._x - ex.X;
                    objStatus.last_y = objStatus._y - ex.Y;
                    objStatus.isMove = 1;
                    int x1       = objStatus._x;
                    int y1       = objStatus._y;
                    int w1       = objStatus._w;
                    int h1       = objStatus._h;
                    Pen penWhite = new Pen(Color.White, 2);
                    g.DrawRectangle(penWhite, x1, y1, w1, h1);
                    g.FillRectangle(new SolidBrush(Color.White), x1, y1, w1, h1);
                    g.FillRectangle(new SolidBrush(Color.White), x1 + 6, y1 + 6, w1, h1); //用白色擦掉画好的节点
                    g.DrawRectangle(new Pen(Color.Black), x1, y1, w1, h1);                //给节点加个黑边框。代表选中了该节点,可以拖动了。
                    g.Dispose();
                    return;
                }
                break;

            case 2:    //mouseMove()
                if (objStatus.isMove == 1)
                {
                    Graphics g  = this.CreateGraphics();
                    int      x1 = objStatus._x;
                    int      y1 = objStatus._y;
                    int      w1 = objStatus._w;
                    int      h1 = objStatus._h;
                    g.DrawRectangle(new Pen(Color.White), x1, y1, w1, h1);               //用白色擦掉拖动时上一位置的节点
                    objStatus.setLocation(ex.X, ex.Y);
                    //         this.checkStatus(objStatus);//防止节点出画板外,省略。
                    int x2       = objStatus._x;
                    int y2       = objStatus._y;
                    Pen penBlack = new Pen(Color.Black);
                    g.DrawRectangle(penBlack, x2, y2, w1, h1);       //在新位置画新的带黑边框的节点
                    g.Dispose();
                    return;
                }
                break;

            case 3:    //mouseUp()
                if (objStatus.isMove == 1)
                {
                    updateLocation(ex, objStatus); //更新节点位置
                    objStatus.isMove = 0;
                    repaint();                     //在新位置处,重新画一个带颜色和阴影及节点说明的矩形框。
                    return;
                }
                break;
            }//end   switch
        }
예제 #3
0
파일: Form2.cs 프로젝트: MatthewNg3416/SFIS
        /**
         * 在Form载入时建立一个节点对象,画出该节点
         *     :param   无                 *
         * <br> 处理步骤如下:
         * <br> 在坐标100,100处,建立一个宽100,高50的节点对象。
         * <br> 调用画图方法,画出该节点
         **/
        private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
        {
            FlowStatus objStatus = new FlowStatus(100, 100, 100, 50);

            objStatus.intStatusTypeId = 0;
            objStatus.dblStatusId     = 1;
            objStatus.strStatusName   = "状态1 ";
            this.gStatus = objStatus;
            repaint();
        }