public PictureLayout CopyLayout(int index) { watched = false; PictureLayout pictureLayout = Layouts[index]; PictureLayout newPictureLayout = null; if (pictureLayout is StandardLayout standardLayout) { newPictureLayout = new StandardLayout(standardLayout) { Name = string.Format("{0} 复制", standardLayout.Name) }; } else if (pictureLayout is PureLayout pureLayout) { newPictureLayout = new PureLayout(pureLayout) { Name = string.Format("{0} 复制", pureLayout.Name) }; } Layouts.Insert(index, newPictureLayout); watched = true; UndoManager.AddUndoData(new CMD_DeleteLayout(newPictureLayout, this, index)); return(newPictureLayout); }
public PureLayout NewPureLayout(int insertIndex, int RenderBufferNum) { PureLayout pureLayout = new PureLayout(DeviceResources) { BlendMode = DefaultBlendMode, RenderBufferNum = RenderBufferNum, guid = System.Guid.NewGuid(), Name = string.Format("图层 {0}", Layouts.Count + 1) }; watched = false; Layouts.Insert(insertIndex, pureLayout); watched = true; UndoManager.AddUndoData(new CMD_DeleteLayout(pureLayout, this, insertIndex)); return(pureLayout); }
private async Task LoadLayouts() { IReadOnlyList <StorageFile> layoutFiles = await layoutsFolder.GetFilesAsync(Windows.Storage.Search.CommonFileQuery.OrderByName); foreach (StorageFile layoutFile in layoutFiles) { if (!".dclf".Equals(layoutFile.FileType, StringComparison.CurrentCultureIgnoreCase)) { continue; } StandardLayout standardLayout = await DirectCanvasLayoutFormat.LoadFromFileAsync(canvasCase, layoutFile); layoutFileMap[standardLayout.guid] = layoutFile; canvasCase.LayoutsMap.Add(standardLayout.guid, standardLayout); } StorageFile layoutSettingsFile = await CaseFolder.GetFileAsync("Layouts.xml"); Stream settingsStream = (await layoutSettingsFile.OpenAsync(FileAccessMode.ReadWrite)).AsStream(); XmlReader xmlReader = XmlReader.Create(settingsStream, xmlReaderSettings); canvasCase.watched = false; while (xmlReader.Read()) { if (xmlReader.NodeType == XmlNodeType.Element) { Guid guid; switch (xmlReader.Name) { case "Layout": guid = Guid.Parse(xmlReader.GetAttribute("Guid")); StandardLayout standardLayout = (StandardLayout)canvasCase.LayoutsMap[guid]; LoadLayoutInfo(xmlReader, standardLayout); canvasCase.Layouts.Add(standardLayout); break; case "PureLayout": guid = Guid.Parse(xmlReader.GetAttribute("Guid")); if (guid == Guid.Empty) { guid = Guid.NewGuid(); } PureLayout pureLayout = new PureLayout(canvasCase.DeviceResources) { guid = guid }; LoadLayoutInfo(xmlReader, pureLayout); string colorString = xmlReader.GetAttribute("Color"); if (!string.IsNullOrEmpty(colorString)) { string[] colorG = colorString.Split(" "); float.TryParse(colorG[0], out float cR); float.TryParse(colorG[1], out float cG); float.TryParse(colorG[2], out float cB); float.TryParse(colorG[3], out float cA); pureLayout.Color = new System.Numerics.Vector4(cR, cG, cB, cA); } canvasCase.LayoutsMap.Add(guid, pureLayout); canvasCase.Layouts.Add(pureLayout); break; } } } canvasCase.watched = true; settingsStream.Dispose(); }