예제 #1
0
        private void pictureBoxMain_MouseMove(object sender, MouseEventArgs e)
        {
            if (state == SELECT_STATE)
            {
                if (isChangingShape)
                {
                    processChanging(e);
                }
                return;
            }
            // neu khong con mouse down thi khong ve nua
            if (!isMouseDown)
            {
                return;
            }

            // them diem hien tai vao click points
            clickedPoints.Add(e.Location);

            // tao shape
            MyShape myShape = null;

            switch (state)
            {
            case LINE_STATE:
                myShape = new MyLine(getPenAttr(), clickedPoints);
                break;

            case RECTANGLE_STATE:
                myShape = new MyRectangle(getPenAttr(), clickedPoints);
                break;

            case ELLIPSE_STATE:
                myShape = new MyEllipse(getPenAttr(), clickedPoints);
                break;

            case POLYGON_STATE:
                myShape = new MyPolygon(getPenAttr(), clickedPoints);
                break;

            case PARALLELOGRAM_STATE:
                myShape = new MyParallelogram(getPenAttr(), clickedPoints);
                break;

            case BEZIER_STATE:
                myShape = new MyBezier(getPenAttr(), clickedPoints);
                break;

            case PARABOL_STATE:
                myShape = new MyParabol(getPenAttr(), clickedPoints);
                break;

            case ARC_STATE:
                myShape = new MyArc(getPenAttr(), clickedPoints);
                break;

            default:
                break;
            }

            if (myShape != null)
            {
                // ve tren bitmap_temp
                bitmap_temp          = (Bitmap)bitmap_primary.Clone();
                pictureBoxMain.Image = bitmap_temp;

                myShape.draw(bitmap_temp, pictureBoxMain);
                myShape.drawEdgePoints(bitmap_temp, pictureBoxMain);
            }

            // remove vi tri vua ve
            // vi day chi la mouse move tam thoi
            clickedPoints.RemoveAt(clickedPoints.Count - 1);
        }