示例#1
0
文件: ObjList.cs 项目: sjyfok/cpp
        public void Clone(VisualGraph drawArea)
        {
            int   n = tempList.Count;
            Point point;

            for (int i = 0; i < n; i++)
            {
                DrawObject o = (DrawObject)tempList[i];
                point = new Point(o.ShapeRect.X + 10, o.ShapeRect.Y + 10);
                switch (o.ObjectType)
                {
                case Global.DrawType.DrawEllipse:
                    DrawEllipse dp = new DrawEllipse(point, drawArea);
                    dp.Selected = false;
                    objList.Add(dp);
                    break;

                case Global.DrawType.DrawLine:
                    DrawLine dl = new DrawLine(point, drawArea);
                    dl.Selected   = false;
                    dl.StartPoint = point;
                    dl.EndPoint   = new Point(point.X + o.ShapeRect.Width,
                                              point.Y + o.ShapeRect.Height);
                    dl.Width    = o.ShapeRect.Width;
                    dl.Height   = o.ShapeRect.Height;
                    dl.PenWidth = o.PenWidth;
                    dl.Color    = o.Color;
                    objList.Add(dl);
                    break;

                case Global.DrawType.DrawRectangle:
                    DrawRectangle dr = new DrawRectangle(point, drawArea);
                    dr.Selected = false;
                    objList.Add(dr);
                    break;

                case Global.DrawType.DrawText:
                    DrawText dt = new DrawText(point, drawArea);
                    dt.Selected = false;
                    objList.Add(dt);
                    break;

                case Global.DrawType.DrawPic:
                    DrawPic   oldpic = (DrawPic)o;
                    DrawPic   dpic   = new DrawPic(point, drawArea);
                    Rectangle ret    = new Rectangle(point.X, point.Y, oldpic.ShapeRect.Width,
                                                     oldpic.ShapeRect.Height);
                    dpic.ShapeRect = ret;
                    dpic.TheImage  = oldpic.TheImage;
                    dpic.Selected  = false;
                    objList.Add(dpic);
                    break;
                }
            }
            drawArea.ActivedObjType = Global.DrawType.POINTER;
        }
示例#2
0
文件: ObjList.cs 项目: sjyfok/cpp
        public void AlignVCenter()
        {
            int MinLeft  = MAX;
            int MaxRight = 0;
            int VCenter  = 0;
            int tempL;
            int tempR;
            int n = SelectionCount;

            for (int i = 0; i < n; i++)
            {
                DrawObject o = GetSelectedObject(i);
                if (o.ObjectType == Global.DrawType.DrawLine)
                {
                    DrawLine l = (DrawLine)o;
                    tempL = Math.Min(l.StartPoint.X, l.EndPoint.X);
                    tempR = Math.Max(l.StartPoint.X, l.EndPoint.X);
                }
                else
                {
                    tempL = o.ShapeRect.X;
                    tempR = o.ShapeRect.Right;
                }
                if (tempL < MinLeft)
                {
                    MinLeft = tempL;
                }
                if (tempR > MaxRight)
                {
                    MaxRight = tempR;
                }
            }

            VCenter = (MinLeft + MaxRight) / 2;
            for (int i = 0; i < n; i++)
            {
                DrawObject o = GetSelectedObject(i);
                if (o.ObjectType == Global.DrawType.DrawLine)
                {
                    DrawLine l = (DrawLine)o;
                    l.Move(VCenter - (l.StartPoint.X + l.EndPoint.X) / 2, 0);
                }
                else
                {
                    int center = (o.ShapeRect.Left + o.ShapeRect.Right) / 2;
                    o.ShapeRect = new Rectangle(o.ShapeRect.Left + (VCenter - center),
                                                o.ShapeRect.Top, o.ShapeRect.Width, o.ShapeRect.Height);
                }
            }
        }
示例#3
0
文件: ObjList.cs 项目: sjyfok/cpp
        public void AlignHCenter()
        {
            int MinTop    = MAX;
            int MaxBottom = 0;
            int HCenter   = 0;
            int tempT;
            int tempB;
            int n = SelectionCount;

            for (int i = 0; i < n; i++)
            {
                DrawObject o = GetSelectedObject(i);
                if (o.ObjectType == Global.DrawType.DrawLine)
                {
                    DrawLine l = (DrawLine)o;
                    tempT = Math.Min(l.StartPoint.Y, l.EndPoint.Y);
                    tempB = Math.Max(l.StartPoint.Y, l.EndPoint.Y);
                }
                else
                {
                    tempT = o.ShapeRect.Top;
                    tempB = o.ShapeRect.Bottom;
                }
                if (tempT < MinTop)
                {
                    MinTop = tempT;
                }
                if (tempB > MaxBottom)
                {
                    MaxBottom = tempB;
                }
            }
            HCenter = (MinTop + MaxBottom) / 2;
            for (int i = 0; i < n; i++)
            {
                DrawObject o = GetSelectedObject(i);
                if (o.ObjectType == Global.DrawType.DrawLine)
                {
                    DrawLine l = (DrawLine)o;
                    l.Move(0, HCenter - (l.StartPoint.Y + l.EndPoint.Y) / 2);
                }
                else
                {
                    int center = (o.ShapeRect.Top + o.ShapeRect.Bottom) / 2;
                    o.ShapeRect = new Rectangle(o.ShapeRect.Left, o.ShapeRect.Top +
                                                (HCenter - center), o.ShapeRect.Width, o.ShapeRect.Height);
                }
            }
        }
示例#4
0
文件: ObjList.cs 项目: sjyfok/cpp
        public void AlignLeft()
        {
            int MinLeft = MAX;
            int temp;
            int n = SelectionCount;

            //找到最左边的X左边
            for (int i = 0; i < n; i++)
            {
                DrawObject o = GetSelectedObject(i);
                if (o.ObjectType == Global.DrawType.DrawLine)
                {
                    DrawLine l = (DrawLine)o;
                    temp = Math.Min(l.StartPoint.X, l.EndPoint.X);
                }
                else
                {
                    temp = o.ShapeRect.Left;
                }
                if (temp < MinLeft)
                {
                    MinLeft = temp;
                }
            }

            //修改所有选中元素到最左坐标
            for (int i = 0; i < n; i++)
            {
                DrawObject o = GetSelectedObject(i);
                if (o.ObjectType == Global.DrawType.DrawLine)
                {
                    DrawLine l = (DrawLine)o;
                    if (l.StartPoint.X < l.EndPoint.X)
                    {
                        l.Move(MinLeft - l.StartPoint.X, 0);
                    }
                    else
                    {
                        l.Move(MinLeft - l.EndPoint.X, 0);
                    }
                }
                else
                {
                    o.ShapeRect = new Rectangle(MinLeft, o.ShapeRect.Top, o.ShapeRect.Width, o.ShapeRect.Height);
                }
            }
        }
示例#5
0
        public void AlignTop()
        {
            int MinTop = MAX;
            int temp;
            int n = SelectionCount;

            for (int i = 0; i < n; i++)
            {
                DrawObject o = GetSelectedObject(i);
                if (o.ObjectType == Global.DrawType.DrawLine)
                {
                    DrawLine l = (DrawLine )o;
                    temp = Math.Min(l.StartPoint.Y, l.EndPoint.Y);
                }
                else
                {
                    temp = o.ShapeRect.Top;
                }
                if (temp < MinTop)
                {
                    MinTop = temp;
                }
            }
            for (int i = 0; i < n; i++)
            {
                DrawObject o = GetSelectedObject(i);

                if (o.ObjectType == Global.DrawType.DrawLine)
                {
                    DrawLine l = (DrawLine)o;
                    if (l.StartPoint.Y < l.EndPoint.Y)
                    {
                        l.Move(0, MinTop - l.StartPoint.Y);
                    }
                    else
                    {
                        l.Move(0, MinTop - l.EndPoint.Y);
                    }
                }
                else
                {
                    o.ShapeRect = new Rectangle(o.ShapeRect.Left, MinTop, o.ShapeRect.Width, o.ShapeRect.Height);
                }
            }
        }
示例#6
0
文件: VisualGraph.cs 项目: sjyfok/cpp
        //将所选工具加入到页面容器中
        private void VisualGraph_DragDrop(object sender, DragEventArgs e)
        {
            Point point = new Point(e.X, e.Y);

            point = this.PointToClient(point);
            switch (activedObjType)
            {
            case Global.DrawType.DrawText:
                DrawText text = new DrawText(point, this);
                objList.UnselectAll();
                objList.AddObject(text);
                text.Selected = true;
                break;

            case Global.DrawType.DrawRectangle:
                DrawRectangle rect = new DrawRectangle(point, this);
                objList.UnselectAll();
                objList.AddObject(rect);
                rect.Selected = true;
                break;

            case Global.DrawType.DrawEllipse:
                DrawEllipse elip = new DrawEllipse(point, this);
                objList.UnselectAll();
                objList.AddObject(elip);
                elip.Selected = true;
                break;

            case Global.DrawType.DrawLine:
                DrawLine line = new DrawLine(point, this);
                objList.UnselectAll();
                objList.AddObject(line);
                line.Selected = true;
                break;

            case Global.DrawType.DrawPic:
                DrawPic pic = new DrawPic(point, this);
                objList.UnselectAll();
                objList.AddObject(pic);
                pic.Selected = true;
                break;
            }
            activedObjType = Global.DrawType.POINTER;
            this.Refresh();
        }
示例#7
0
文件: ObjList.cs 项目: sjyfok/cpp
        public void AlignBottom()
        {
            int MaxBottom = 0;
            int temp;
            int n = SelectionCount;

            for (int i = 0; i < n; i++)
            {
                DrawObject o = GetSelectedObject(i);
                if (o.ObjectType == Global.DrawType.DrawLine)
                {
                    DrawLine l = (DrawLine)o;
                    temp = Math.Max(l.StartPoint.Y, l.EndPoint.Y);
                }
                else
                {
                    temp = o.ShapeRect.Bottom;
                }
                if (temp > MaxBottom)
                {
                    MaxBottom = temp;
                }
            }
            for (int i = 0; i < n; i++)
            {
                DrawObject o = GetSelectedObject(i);
                if (o.ObjectType == Global.DrawType.DrawLine)
                {
                    DrawLine l = (DrawLine)o;
                    if (l.StartPoint.Y > l.EndPoint.Y)
                    {
                        l.Move(0, MaxBottom - l.StartPoint.Y);
                    }
                    else
                    {
                        l.Move(0, MaxBottom - l.EndPoint.Y);
                    }
                }
                else
                {
                    o.ShapeRect = new Rectangle(o.ShapeRect.Left,
                                                MaxBottom - o.ShapeRect.Height, o.ShapeRect.Width, o.ShapeRect.Height);
                }
            }
        }
示例#8
0
文件: ObjList.cs 项目: sjyfok/cpp
        public void AlignRight()
        {
            int MaxRight = 0;
            int temp;
            int n = SelectionCount;

            for (int i = 0; i < n; i++)
            {
                DrawObject o = GetSelectedObject(i);
                if (o.ObjectType == Global.DrawType.DrawLine)
                {
                    DrawLine l = (DrawLine)o;
                    temp = Math.Max(l.StartPoint.X, l.EndPoint.X);
                }
                else
                {
                    temp = o.ShapeRect.Right;
                }
                if (temp > MaxRight)
                {
                    MaxRight = temp;
                }
            }
            for (int i = 0; i < n; i++)
            {
                DrawObject o = GetSelectedObject(i);
                if (o.ObjectType == Global.DrawType.DrawLine)
                {
                    DrawLine l = (DrawLine)o;
                    if (l.StartPoint.X > l.EndPoint.X)
                    {
                        l.Move(MaxRight - l.StartPoint.X, 0);
                    }
                    else
                    {
                        l.Move(MaxRight - l.EndPoint.X, 0);
                    }
                }
                else
                {
                    o.ShapeRect = new Rectangle(MaxRight - o.ShapeRect.Width, o.ShapeRect.Top,
                                                o.ShapeRect.Width, o.ShapeRect.Height);
                }
            }
        }