예제 #1
0
        public void cmd_draw(UIMouseEventArgs e)
        {
            if (ObjectsList.Any(x => x.EditMode))
            {
                MyPoint CurrPosition = new MyPoint(e.ClientX - LocalData.SVGPosition.x, e.ClientY - LocalData.SVGPosition.y);


                BPaintHandDraw Curr_Object = (BPaintHandDraw)ObjectsList.Single(x => x.EditMode);

                if (Curr_Object.data.Any())
                {
                    MyPoint LastPoint = Curr_Object.data.Last();

                    if (LastPoint.x != CurrPosition.x || LastPoint.y != CurrPosition.y)
                    {
                        Curr_Object.data.Add(CurrPosition);
                        cmd_RefreshSVG();
                    }
                }
                else
                {
                    Curr_Object.data.Add(CurrPosition);
                    cmd_RefreshSVG();
                }
            }
        }
예제 #2
0
        public void cmd_prepareDraw(UIMouseEventArgs e)
        {
            MyPoint CurrPosition = new MyPoint(e.ClientX - LocalData.SVGPosition.x, e.ClientY - LocalData.SVGPosition.y);

            BPaintHandDraw new_BPaintHandDraw = new BPaintHandDraw();


            if (ObjectsList.Any())
            {
                new_BPaintHandDraw.ObjectID = ObjectsList.Max(x => x.ObjectID) + 1;

                cmd_Clear_Selection();
                cmd_Clear_Editing();
            }
            else
            {
                new_BPaintHandDraw.ObjectID = 1;
            }

            new_BPaintHandDraw.ObjectType    = BPaintOpbjectType.HandDraw;
            new_BPaintHandDraw.Selected      = true;
            new_BPaintHandDraw.EditMode      = true;
            new_BPaintHandDraw.Color         = Color1;
            new_BPaintHandDraw.width         = LineWidth1;
            new_BPaintHandDraw.StartPosition = new MyPoint(CurrPosition.x, CurrPosition.y);
            new_BPaintHandDraw.data          = new List <MyPoint>();


            ObjectsList.Add(new_BPaintHandDraw);
        }
예제 #3
0
        private path drawPath(BPaintHandDraw Par_Object)
        {
            StringBuilder sb = new StringBuilder();

            bool IsFirst = true;


            sb.Append("M");
            sb.Append(Par_Object.StartPosition.x + Par_Object.PositionChange.x);
            sb.Append(" ");
            sb.Append(Par_Object.StartPosition.y + Par_Object.PositionChange.y);
            sb.Append(" ");

            for (int i = 0; i < Par_Object.data.Count; i++)
            {
                sb.Append("L");
                sb.Append(Par_Object.data[i].x + Par_Object.PositionChange.x);
                sb.Append(" ");
                sb.Append(Par_Object.data[i].y + Par_Object.PositionChange.y);
                sb.Append(" ");
            }


            path p = new path()
            {
                id     = "path" + Par_Object.ObjectID,
                fill   = "none",
                stroke = Par_Object.Color,
                d      = sb.ToString(),
                // opacity = _opacity,
                stroke_width = Par_Object.width,
            };


            if (Par_Object.Scale.x != 0 || Par_Object.Scale.y != 0)
            {
                p.transform = "scale(" + Par_Object.Scale.x + "," + Par_Object.Scale.y + ")";
            }


            return(p);
        }
예제 #4
0
        public static RectD Get_Border_Points(BPaintHandDraw Par_obj, bool padding = true)
        {
            RectD result = new RectD();

            List <PointD> data = Par_obj.data.ToList();

            data.Add(Par_obj.Position.PtD);

            result.x      = data.Min(j => j.X);
            result.y      = data.Min(j => j.Y);
            result.width  = data.Max(j => j.X) - result.x;
            result.height = data.Max(j => j.Y) - result.y;

            if (padding)
            {
                Set_Padding(result);
            }

            return(result);
        }
예제 #5
0
        public static MyPointRect Get_Border_Points(BPaintHandDraw Par_obj)
        {
            MyPointRect result = new MyPointRect();


            List <MyPoint> data = Par_obj.data.ToList();

            data.Add(Par_obj.StartPosition);

            result.x      = data.Min(j => j.x);
            result.y      = data.Min(j => j.y);
            result.width  = data.Max(j => j.x) - result.x;
            result.height = data.Max(j => j.y) - result.y;


            result.x += Par_obj.PositionChange.x;
            result.y += Par_obj.PositionChange.y;



            Set_Padding(result);

            return(result);
        }