public void LoadLayers()
        {
            Borders.Clear();
            var previewResolution = 75;

            var layers = LayerHelper.GetLayers().ToList();

            //Ensure that the empty layer is the first option in the list.
            var emptyLayer = layers.FirstOrDefault(i => i.Type == Layer.LayerType.Border && i.Name == "None");

            if (emptyLayer != null)
            {
                Borders.Add(new BorderInfo
                {
                    Image = BitmapHelper.ConvertBitmapToImageSource(ImageLoader.LoadBitmapFromFile(emptyLayer.File, previewResolution, 5)),
                    Info  = emptyLayer
                });
            }

            foreach (var layer in layers.Where(i => i.Type == Layer.LayerType.Border && i != emptyLayer))
            {
                Borders.Add(new BorderInfo
                {
                    Image = BitmapHelper.ConvertBitmapToImageSource(ImageLoader.LoadBitmapFromFile(layer.File, previewResolution, previewResolution)),
                    Info  = layer
                });
            }
        }
示例#2
0
        public void AddPoint(double x, double y)
        {
            Point v = new Point {
                X = x, Y = y
            };

            if (prevPoint.Equals(v))
            {
                return;
            }


            if (prevPoint.HasValue)
            {
                RawBorder rb = new RawBorder(prevPoint.Value, v);
                Borders.Add(rb);
            }
            prevPoint = v;



            string p = string.Format("{0}_{1}", x, y);

            if (!existingPoints.Contains(p))
            {
                Points.Add(v);
                calcExtreme();
                existingPoints.Add(p);
            }
        }
示例#3
0
文件: Center.cs 项目: Gevil/Projects
 public void AddBorder(Edge edge)
 {
     if (!Borders.Contains(edge))
     {
         Borders.Add(edge);
     }
 }
示例#4
0
 private void AddDefaultStyles()
 {
     Fonts.Add(new Font("Calibri", size: 11));
     Fills.Add(new Fill(new PatternFill(FillPattern.None, null, null), null));
     Fills.Add(new Fill(new PatternFill(FillPattern.Gray125, null, null), null));
     Borders.Add(new Border());
     CellFormats.Add(new CellFormat(null, 0, 0, 0, 0));
 }
示例#5
0
        public void ClassifyEdge()
        {
            var compatiblity = new List <int>();

            foreach (var tile in _tiles)
            {
                var tilesThatCanBeAdjacent = _tiles.Where(t => t.Id != tile.Id && tile.CouldBeAdjacentOf(t)).ToList();
                var emptyBorder            = 4 - tilesThatCanBeAdjacent.Count;
                if (Width == 1 || Height == 1)
                {
                    if (emptyBorder == 3)
                    {
                        Corners.Add(tile);
                    }
                    else
                    {
                        if (emptyBorder == 2)
                        {
                            Borders.Add(tile);
                        }
                        else
                        {
                            if (Width == 1 && Height == 1)
                            {
                                Corners.Add(tile);
                            }
                        }
                    }
                }
                else
                {
                    if (emptyBorder == 2)
                    {
                        Corners.Add(tile);
                        tile.MarkAsCorner(tilesThatCanBeAdjacent);
                    }
                    else
                    {
                        if (emptyBorder == 1)
                        {
                            Borders.Add(tile);
                            tile.MarkAsBorder(tilesThatCanBeAdjacent);
                        }
                        else
                        {
                            tile.MarkAsInsidePiece(tilesThatCanBeAdjacent);
                        }
                    }
                }
            }
        }
示例#6
0
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            // 每次点击此按钮会将当前呈现的图片移除视觉树,再将其Source属性设置为null。
            // 然后新建一个Image控件,并将其Source属性设置为RenderTargetBitmap对象,再呈现出来。
            // 再次过程中,RenderTargetBitmap对象从来不会被回收,造成内存泄露。
            // 可以从资源管理其中观察到程序的内存持续上涨的现象。

            // Remove the current Image control from the  visual tree and set source is null when click button.
            // Then new a image control and add source to the RenderTargetBitmap object and show it.
            // You can see the gc never delete the RenderTargetBitmap object that make  memory leak.


            var oldBorder = RootGrid.Children.OfType <Border>().LastOrDefault();

            if (oldBorder != null)
            {
                var oldImage = (Image)oldBorder.Child;


                // 如果在Image控件移除视觉树之前将其Source属性设为null,并调用UpdateLayout方法。
                // 则RenderTargetBitmap对象可被回收,不会导致内存泄露。
                // 取消注释下面的代码可以观察到上述现象。
                // In order to solve it , you should set the image.Source is null and use UpdateLayout.
                // The below code can solve it.
                // oldImage.Source = null;
                // oldImage.UpdateLayout();

                // 将当前的Image控件移除视觉树。
                // Remove the current Image control from the  visual tree.
                RootGrid.Children.Remove(oldBorder);
                oldImage.Source = null;
                Borders.Add(oldBorder);
            }

            var bitmap = new RenderTargetBitmap(1024, 1024, 96, 96, PixelFormats.Default);

            var image = new Image {
                Source = bitmap
            };
            var border = new Border {
                Child = image
            };

            RootGrid.Children.Add(border);

            // 为了便于观察内存的变化,每次操作后都会进行垃圾回收。
            // In order to facilitate changes in memory, after each operation will be garbage collection
            GC.Collect();
        }
示例#7
0
    // ***************************************************************************
    //  PRIVATE METHODS
    // ***************************************************************************
    private void assembleBorders()
    {
        borders = new List <Border>();
        // trigger to help build continuous borders
        bool valid = false;

        // create inline method to simplify the different scan direction below
        void scan(IEnumerable <int> xLocations, IEnumerable <int> yLocations, DIRECTION direction)
        {
            var border = new Border(this, direction);

            foreach (var x in xLocations)
            {
                foreach (var y in yLocations)
                {
                    if (g[x, y] < 1)
                    {
                        border.AddLocation(new Location(x, y) + corner);
                        valid = true;
                    }
                    else
                    {
                        // sharp break in discomfort, unpassable location, close off this border
                        if (valid)
                        {
                            borders.Add(border);
                            border = new Border(this, direction);
                        }
                        valid = false;
                    }
                }
            }
            // after the edge was scanned, see if we add this final border up to the corner
            if (valid)
            {
                Borders.Add(border);
            }
        }

        // scan the bottom (y=0, SOUTH)
        scan(Enumerable.Range(0, g.GetLength(0)), Enumerable.Range(0, 1), DIRECTION.SOUTH);
        // scan the top (y=length, NORTH)
        scan(Enumerable.Range(0, g.GetLength(0)), Enumerable.Range(g.GetLength(1) - 1, 1), DIRECTION.NORTH);
        // scan the left (x=0, WEST)
        scan(Enumerable.Range(0, 1), Enumerable.Range(0, g.GetLength(1)), DIRECTION.WEST);
        // scan the right (x=length, EAST)
        scan(Enumerable.Range(g.GetLength(0) - 1, 1), Enumerable.Range(0, g.GetLength(1)), DIRECTION.EAST);
    }
        private void LstvPens_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            Borders.ToList().ForEach(b => b.Child = null);
            Borders.Clear();
            var pb = (LstvPens.SelectedItem as PenBase);

            pb.PenChanged?.Invoke();
            pb.PenParts.ToList().ForEach(p =>
            {
                var b = new Border()
                {
                    Child = p.Control
                };
                Borders.Add(b);
            });
        }
示例#9
0
    public EmojiGif2AnimationData(string path)
    {
        if (Borders == null)
        {
            Borders = new Dictionary <string, string>();
        }
        var lines = System.IO.File.ReadAllLines(path);

        foreach (var l in lines)
        {
            var row = l.Split('|');
            if (row.Length >= 2)
            {
                Borders.Add(row[0], row[1]);
            }
        }
    }
示例#10
0
        public uint Add(Border border)
        {
            if (border == null)
            {
                throw new ArgumentNullException(nameof(border));
            }

            var i = Borders.IndexOf(border);

            if (i < 0)
            {
                i = Borders.Count;
                Borders.Add(border);
            }

            return((uint)i);
        }
示例#11
0
        private void LoadBorders()
        {
            this.Borders = new ObservableCollection <Border>();

            foreach (var border in this.Land.Borders)
            {
                var land = MainViewModel.GetInstance()
                           .LandsList
                           .Where(l => l.Alpha3Code == border)
                           .FirstOrDefault();
                if (land != null)
                {
                    Borders.Add(new Border()
                    {
                        Code = land.Alpha3Code,
                        Name = land.Name
                    });
                }
            }
        }
示例#12
0
        /// <summary>
        /// Loads the style XML to memory
        /// </summary>
        private void LoadFromDocument()
        {
            //NumberFormats
            ExcelNumberFormatXml.AddBuildIn(NameSpaceManager, NumberFormats);
            XmlNode numNode = _styleXml.SelectSingleNode(NumberFormatsPath, _nameSpaceManager);

            if (numNode != null)
            {
                foreach (XmlNode n in numNode)
                {
                    ExcelNumberFormatXml nf = new ExcelNumberFormatXml(_nameSpaceManager, n);
                    NumberFormats.Add(nf.Id, nf);
                    if (nf.NumFmtId >= NumberFormats.NextId)
                    {
                        NumberFormats.NextId = nf.NumFmtId + 1;
                    }
                }
            }

            //Fonts
            XmlNode fontNode = _styleXml.SelectSingleNode(FontsPath, _nameSpaceManager);

            foreach (XmlNode n in fontNode)
            {
                ExcelFontXml f = new ExcelFontXml(_nameSpaceManager, n);
                Fonts.Add(f.Id, f);
            }

            //Fills
            XmlNode fillNode = _styleXml.SelectSingleNode(FillsPath, _nameSpaceManager);

            foreach (XmlNode n in fillNode)
            {
                ExcelFillXml f;
                if (n.FirstChild != null && n.FirstChild.LocalName == "gradientFill")
                {
                    f = new ExcelGradientFillXml(_nameSpaceManager, n);
                }
                else
                {
                    f = new ExcelFillXml(_nameSpaceManager, n);
                }
                Fills.Add(f.Id, f);
            }

            //Borders
            XmlNode borderNode = _styleXml.SelectSingleNode(BordersPath, _nameSpaceManager);

            foreach (XmlNode n in borderNode)
            {
                ExcelBorderXml b = new ExcelBorderXml(_nameSpaceManager, n);
                Borders.Add(b.Id, b);
            }

            //cellStyleXfs
            XmlNode styleXfsNode = _styleXml.SelectSingleNode(CellStyleXfsPath, _nameSpaceManager);

            if (styleXfsNode != null)
            {
                foreach (XmlNode n in styleXfsNode)
                {
                    ExcelXfs item = new ExcelXfs(_nameSpaceManager, n, this);
                    CellStyleXfs.Add(item.Id, item);
                }
            }

            XmlNode styleNode = _styleXml.SelectSingleNode(CellXfsPath, _nameSpaceManager);

            for (int i = 0; i < styleNode.ChildNodes.Count; i++)
            {
                XmlNode  n    = styleNode.ChildNodes[i];
                ExcelXfs item = new ExcelXfs(_nameSpaceManager, n, this);
                CellXfs.Add(item.Id, item);
            }

            //cellStyle
            XmlNode namedStyleNode = _styleXml.SelectSingleNode(CellStylesPath, _nameSpaceManager);

            if (namedStyleNode != null)
            {
                foreach (XmlNode n in namedStyleNode)
                {
                    ExcelNamedStyleXml item = new ExcelNamedStyleXml(_nameSpaceManager, n, this);
                    NamedStyles.Add(item.Name, item);
                }
            }

            //dxfsPath
            XmlNode dxfsNode = _styleXml.SelectSingleNode(dxfsPath, _nameSpaceManager);

            if (dxfsNode != null)
            {
                foreach (XmlNode x in dxfsNode)
                {
                    ExcelDxfStyleConditionalFormatting item = new ExcelDxfStyleConditionalFormatting(_nameSpaceManager, x, this);
                    Dxfs.Add(item.Id, item);
                }
            }
        }
示例#13
0
 public void AddBorder(CountryInfo neighbor, bool hasLandBorder, bool hasMaritimeBorder, bool excluded)
 {
     Borders.Add(new BorderInfo(neighbor, hasLandBorder, hasMaritimeBorder, excluded));
 }