예제 #1
0
        public void ActiveDrawLine(Point cp)
        {
            if (Target == null)
            {
                return;
            }
            if (Target.SelectLayer == null)
            {
                return;
            }
            if (p == null)
            {
                return;
            }
            PhotoLayer pl         = Target.SelectLayer;
            Canvas     drawCanvas = pl.getTempObjectCanvas();

            l.X2 = cp.X;
            l.Y2 = cp.Y;
            if (drawCanvas.Children.Contains(l))
            {
            }
            else
            {
                drawCanvas.Children.Add(l);
            }
        }
예제 #2
0
        public void ReadImageFromFile()//加载照片
        {
            var bl = SilverlightLFC.common.Environment.getEnvironment().OpenImage();

            if (bl == null || bl.Result == null || bl.Result.Count == 0)
            {
                return;
            }
            var v = bl.Result.FirstOrDefault();

            if (v == null)
            {
                return;
            }
            //PhotoLayers.Children.Clear();
            if (SelectLayer == null)
            {
                PhotoLayer pl = new PhotoLayer();
                PhotoLayers.Children.Add(pl);
                SelectLayer = pl;
                //return;
            }

            SelectLayer.setPhoto(WriteableBitmapHelper.Clone(v), ScalePercent);
            setClip();
            //SelectLayer.setScale(ScalePercent);
        }
예제 #3
0
 public LayerIcon(PhotoLayer p)
 {
     InitializeComponent();
     //acm = new ActionMove(this, this);
     pl = p;
     ReadInfor();
 }
예제 #4
0
        public void ProcessContract(int n)
        {
            DCTestLibrary.PhotoTest pt = new DCTestLibrary.PhotoTest();
            PhotoLayer      pl         = p.SelectLayer;
            WriteableBitmap b          = pl.ProcPhoto;

            pl.ProcPhoto = pt.SetContrast(b, n);
        }
예제 #5
0
        public void ProcessInvert()
        {
            DCTestLibrary.PhotoTest pt = new DCTestLibrary.PhotoTest();
            PhotoLayer      pl         = p.SelectLayer;
            WriteableBitmap b          = pl.ProcPhoto;

            pl.ProcPhoto = pt.Invert(b);
        }
예제 #6
0
        public void ProcessMosaic(int n)
        {
            DCTestLibrary.PhotoTest pt = new DCTestLibrary.PhotoTest();
            PhotoLayer      pl         = p.SelectLayer;
            WriteableBitmap b          = pl.ProcPhoto;

            pl.ProcPhoto = pt.Mosaic(b, n);
        }
예제 #7
0
 public void setLayersZIndex()
 {
     for (int i = 0; i < stackLayer.Children.Count; i++)
     {
         LayerIcon  li = stackLayer.Children[i] as LayerIcon;
         PhotoLayer pl = li.getLayer();
         Canvas.SetZIndex(pl, stackLayer.Children.Count - stackLayer.Children.IndexOf(li));
     }
 }
예제 #8
0
 public void InitLayers()//如果一个图层都没有,就建立一个默认的图层
 {
     if (PhotoLayers.Children.Count == 0)
     {
         PhotoLayer pl = new PhotoLayer();
         PhotoLayers.Children.Add(pl);
         _SelectedLayer = pl;
     }
 }
예제 #9
0
        public PhotoLayer getCopyClip()//找到截图
        {
            PhotoLayer t = getCopy();

            //PathGeometry g=SelectPath.Data as PathGeometry ;

            //t.SelectPath = SelectPath;
            //t.Layer.Clip = SelectPath;
            return(t);
        }
예제 #10
0
 public void AddLayer(PhotoLayer o)//层永远加在最上面
 {
     setLayersZIndex();
     Canvas.SetZIndex(o, pc.getLayers().Children.Count);
     SelectLayerIcon              = new LayerIcon(o);
     SelectLayerIcon.selectLayer += new LayerEventHandler(SelectLayerIcon_selectLayer);
     o.Selected();
     //li.Init(o);
     SelectLayerIcon.PointerPressed  += new PointerEventHandler(LayerIcon_PointerPressed);
     SelectLayerIcon.PointerReleased += new PointerEventHandler(LayerIcon_PointerReleased);
     stackLayer.Children.Add(SelectLayerIcon);
     pc.PhotoLayers.Children.Add(SelectLayerIcon.getLayer());
 }
예제 #11
0
        public void ActiveDrawArea(Point cp)
        {
            if (Target == null)
            {
                return;
            }
            if (Target.SelectLayer == null)
            {
                return;
            }
            if (p == null)
            {
                return;
            }
            PhotoLayer pl = Target.SelectLayer;
            Canvas     drawCanvas = pl.getTempObjectCanvas();
            double     bl = 0, bt = 0, w = 0, h = 0;

            if (cp.X > sp.X)
            {
                bl = sp.X;
                w  = cp.X - sp.X;
            }
            else
            {
                bl = cp.X;
                w  = sp.X - cp.X;
            }
            if (cp.Y > sp.Y)
            {
                bt = sp.Y;
                h  = cp.Y - sp.Y;
            }
            else
            {
                bt = cp.Y;
                h  = sp.Y - cp.Y;
            }
            r.Width  = w;
            r.Height = h;
            Canvas.SetLeft(r, bl);
            Canvas.SetTop(r, bt);
            if (drawCanvas.Children.Contains(r))
            {
            }
            else
            {
                drawCanvas.Children.Add(r);
            }
        }
예제 #12
0
        public void ReadLayers()
        {
            Canvas ls = pc.getLayers();

            stackLayer.Children.Clear();
            for (int i = 0; i < ls.Children.Count; i++)
            {
                PhotoLayer pl = ls.Children[i] as PhotoLayer;
                stackLayer.Children.Add(pl.li);
                pl.li.ReadInfor();
                LayerIcon li = stackLayer.Children[i] as LayerIcon;
                li.selectLayer += new LayerEventHandler(SelectLayerIcon_selectLayer);
                li.ReadInfor();
            }
        }
예제 #13
0
        public PhotoLayer getClip()
        {
            PhotoLayer pl = new PhotoLayer();

            if (Layer.Children.Contains(sImg))
            {
                Rect            r  = sImg.Clip.Rect;
                WriteableBitmap cb = DrawGraphic.getImageArea(r, sImg);
                pl.setPhoto(cb, ScalePercent, sImg.Clip);
            }
            else
            {
                pl.setPhoto(Photo.Source as WriteableBitmap, ScalePercent);
            }
            return(pl);
        }
예제 #14
0
        public void DeActiveDrawArea()
        {
            if (Target == null)
            {
                return;
            }
            if (Target.SelectLayer == null)
            {
                return;
            }
            if (p == null)
            {
                return;
            }
            PhotoLayer pl         = Target.SelectLayer;
            Canvas     drawCanvas = pl.getTempObjectCanvas();

            if (drawCanvas.Children.Contains(r))
            {
                drawCanvas.Children.Remove(r);
            }
            r = null;
        }
예제 #15
0
        public void ActiveDrawPath(Point cp)
        {
            if (Target == null)
            {
                return;
            }
            if (Target.SelectLayer == null)
            {
                return;
            }
            if (p == null)
            {
                return;
            }
            PhotoLayer   pl         = Target.SelectLayer;
            Canvas       drawCanvas = pl.getTempObjectCanvas();
            PathGeometry pg         = p.Data as PathGeometry;

            PathFigure pf = pg.Figures[0];

            if (pf == null)
            {
                return;
            }
            LineSegment ls = new LineSegment();

            ls.Point = cp;
            pf.Segments.Add(ls);
            if (drawCanvas.Children.Contains(p))
            {
            }
            else
            {
                drawCanvas.Children.Add(p);
            }
        }
예제 #16
0
        private void buttonNewLayer_Click(object sender, RoutedEventArgs e)
        {
            PhotoLayer pl = new PhotoLayer();

            AddLayer(pl);
        }
예제 #17
0
        //public void select(GeometryGroup gg)//依据一组gg添加一个选区
        //{//在该图层上面复制一个图像,然后设置一个clip
        //    Image si = new Image();
        //    si.Height = Photo.Height;
        //    si.Width = Photo.Width;
        //    gg.FillRule = FillRule.EvenOdd;
        //    PathFigure pf=null;

        //    WriteableBitmap wb = new WriteableBitmap(Photo.Source);

        //}

        public PhotoLayer getCopy()
        {
            PhotoLayer t = new PhotoLayer();

            t.setPhoto(Photo.Source as WriteableBitmap, ScalePercent);
            foreach (UIElement ui in canvasTempObject.Children)
            {
                Type ut = ui.GetType();
                if (ut.Name == "Rectangle")
                {
                    Rectangle tr = new Rectangle();
                    t.Layer.Children.Add(tr);
                    tr.Fill   = ((Rectangle)ui).Fill;
                    tr.Stroke = ((Rectangle)ui).Stroke;
                    tr.Width  = ((Rectangle)ui).Width;
                    tr.Height = ((Rectangle)ui).Height;
                    Canvas.SetLeft(tr, Canvas.GetLeft(ui));
                    Canvas.SetTop(tr, Canvas.GetTop(ui));
                }
                if (ut.Name == "Ellipse")
                {
                    Ellipse tr = new Ellipse();
                    t.Layer.Children.Add(tr);
                    tr.Fill   = ((Ellipse)ui).Fill;
                    tr.Stroke = ((Ellipse)ui).Stroke;
                    tr.Width  = ((Ellipse)ui).Width;
                    tr.Height = ((Ellipse)ui).Height;
                    Canvas.SetLeft(tr, Canvas.GetLeft(ui));
                    Canvas.SetTop(tr, Canvas.GetTop(ui));
                }
                if (ut.Name == "Path")
                {
                    Path         tr = new Path();
                    PathGeometry tp = new PathGeometry();
                    PathGeometry sp = ((Path)ui).Data as PathGeometry;

                    foreach (PathFigure pf in sp.Figures)
                    {
                        PathFigure tpf = new PathFigure();
                        tp.Figures.Add(tpf);
                        tpf.StartPoint = new Point(pf.StartPoint.X, pf.StartPoint.Y);
                        tpf.IsClosed   = pf.IsClosed;
                        tpf.IsFilled   = pf.IsFilled;
                        foreach (PathSegment ps in pf.Segments)
                        {
                            Type pathtype = ps.GetType();
                            if (pathtype.Name == "LineSegment")
                            {
                                LineSegment ls = new LineSegment();
                                ls.Point = new Point(((LineSegment)ps).Point.X, ((LineSegment)ps).Point.Y);
                                tpf.Segments.Add(ls);
                            }
                            if (pathtype.Name == "ArcSegment")
                            {
                                ArcSegment ls = new ArcSegment();
                                ls.Point          = new Point(((LineSegment)ps).Point.X, ((LineSegment)ps).Point.Y);
                                ls.RotationAngle  = ((ArcSegment)ps).RotationAngle;
                                ls.Size           = new Size(((ArcSegment)ps).Size.Width, ((ArcSegment)ps).Size.Height);
                                ls.SweepDirection = ((ArcSegment)ps).SweepDirection;
                                tpf.Segments.Add(ls);
                            }
                        }
                    }
                    tr.Data = tp;
                    t.Layer.Children.Add(tr);
                    tr.Fill   = ((Path)ui).Fill;
                    tr.Stroke = ((Path)ui).Stroke;
                    tr.Width  = ((Path)ui).Width;
                    tr.Height = ((Path)ui).Height;
                    Canvas.SetLeft(tr, Canvas.GetLeft(ui));
                    Canvas.SetTop(tr, Canvas.GetTop(ui));
                }
            }
            return(t);
        }
예제 #18
0
 public void FlatLayer(PhotoLayer sl, PhotoLayer tl) //拼合图层,包括影像图层拼合,对象影像图层混合拼合和对象图层拼合四种方式
 {                                                   //只要有影像图层参加,最终的结果就是影像的
 }
예제 #19
0
        private void buttonES_Click(object sender, RoutedEventArgs e)
        {
            PhotoLayer c = pc.SelectLayer;

            c.EndSelect();
        }