Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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();
        }