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 }); } }
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); } }
public void AddBorder(Edge edge) { if (!Borders.Contains(edge)) { Borders.Add(edge); } }
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)); }
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); } } } } }
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(); }
// *************************************************************************** // 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); }); }
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]); } } }
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); }
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 }); } } }
/// <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); } } }
public void AddBorder(CountryInfo neighbor, bool hasLandBorder, bool hasMaritimeBorder, bool excluded) { Borders.Add(new BorderInfo(neighbor, hasLandBorder, hasMaritimeBorder, excluded)); }