Ejemplo n.º 1
0
        private void loadScene(TreeView treeview, CarConfig carConfig)
        {
            Form_Progress form_Progress = new Form_Progress(carConfig.GetTotalSceneNum(), false);

            form_Progress.Location = new Point((displayWidth - form_Progress.Width) / 2, (displayHeight - form_Progress.Height) / 2);
            form_Progress.Show();

            GlobalConfig.Controller.HideCenterBoardPictureBox();

            rightPanel.SuspendLayout();
            treeview.BeginUpdate();
            foreach (Scene scene in carConfig.Scenes)
            {
                TreeNode sceneNode = new TreeNode
                {
                    Name = scene.Id.ToString(),
                    Text = scene.Name
                };
                GlobalConfig.Controller.InitScene(scene.Id, true);

                foreach (Scene childScene in scene.children)
                {
                    sceneNode.Nodes.Add(new TreeNode
                    {
                        Name = childScene.Id.ToString(),
                        Text = childScene.Name
                    });

                    GlobalConfig.Controller.InitScene(childScene.Id, true);
                    form_Progress.AddProgressValue(1, string.Format("场景 {0} 已加载", childScene.Name));
                }

                form_Progress.AddProgressValue(1, string.Format("场景 {0} 已加载", scene.Name));
                treeview.Nodes.Add(sceneNode);
            }


            treeview.EndUpdate();
            rightPanel.ResumeLayout();

            GlobalConfig.Controller.ShowCenterBoardPictureBox();

            form_Progress.Close();
            form_Progress.Dispose();
        }
Ejemplo n.º 2
0
        public string StartOutput(Outputs outputs, Dictionary <int, Property> propertyIdMapping, string basePath, Form_Progress progressForm)
        {
            progressForm.SetProgressMax(outputs.ImageOutputs.Length + outputs.XmlOutputs.Length + outputs.MergeImageOutputs.Length);

            foreach (ImageOutput imageOutout in outputs.ImageOutputs)
            {
                if (!propertyIdMapping.ContainsKey(imageOutout.PropertyId))
                {
                    return(Errors.PropertyIdNotExist);
                }

                Property property = propertyIdMapping[imageOutout.PropertyId];

                Control[] controls = GetSceneFlowLayoutPanel(property.SceneId).Controls.Find(property.GetPictureBoxId(), true);
                if (controls == null || controls.Length == 0)
                {
                    return(Errors.UiPictureBoxNotExist);
                }

                try
                {
                    string newFile = Path.Combine(basePath, imageOutout.Target);
                    string dirName = newFile.Substring(0, newFile.LastIndexOf('\\'));

                    if (!Directory.Exists(dirName))
                    {
                        Directory.CreateDirectory(dirName);
                    }

                    ((PictureBox)(controls[0])).Image.Save(newFile);
                }
                catch (Exception ex)
                {
                    return(ex.ToString());
                }
                progressForm.AddProgressValue(1, string.Format("组件:{0},   属性: {1} 导出完毕", property.GroupName, property.Name));
            }

            foreach (XmlOutput xmlOutout in outputs.XmlOutputs)
            {
                if (!propertyIdMapping.ContainsKey(xmlOutout.PropertyId))
                {
                    return(Errors.PropertyIdNotExist);
                }
                Property property = propertyIdMapping[xmlOutout.PropertyId];


                Control[] controls = null;
                if (property.OptType == PropertyOperateType.AlphaWhiteImageSetAlpha)
                {
                    controls = GetSceneFlowLayoutPanel(property.SceneId).Controls.Find(property.GetTextBoxAlphaID(), true);
                }
                else if (property.OptType == PropertyOperateType.AlphaWhiteImageSetColor)
                {
                    controls = GetSceneFlowLayoutPanel(property.SceneId).Controls.Find(property.GetTextBoxColorID(), true);
                }

                if (controls == null || controls.Length == 0)
                {
                    return(Errors.UiPictureBoxNotExist);
                }
                progressForm.AddProgressValue(1, string.Format("组件:{0}, 属性: {1} 导出完毕", property.GroupName, property.Name));
            }


            List <PngUtil.MergeImageParams> list = new List <PngUtil.MergeImageParams>();

            foreach (MergeImageOutput MergeImageOutPut in outputs.MergeImageOutputs)
            {
                Dictionary <int, Property> map = MergeImageOutPut.GetPropertyMap();
                foreach (int proertyId in map.Keys)
                {
                    if (!propertyIdMapping.ContainsKey(proertyId))
                    {
                        return(Errors.PropertyIdNotExist);
                    }

                    Property propertItem = propertyIdMapping[proertyId];
                    if (map.ContainsKey(propertItem.RefPropertyId))   //如果出现引用形式, 则此图不需要参与合成
                    {
                        continue;
                    }

                    Control[] controls = GetSceneFlowLayoutPanel(propertItem.SceneId).Controls.Find(propertItem.GetPictureBoxId(), true);
                    if (controls == null || controls.Length == 0)
                    {
                        return(Errors.UiPictureBoxNotExist);
                    }


                    list.Add(new PngUtil.MergeImageParams
                    {
                        Image = ((PictureBox)(controls[0])).Image,
                    });
                }
                ;

                Image image = null;
                if (list.Count == 1)
                {
                    image = list[0].Image;
                }
                else
                {
                    image = PngUtil.MergeImageList(list, list[0].Image.Width, list[0].Image.Height);
                }

                try
                {
                    string newFile = Path.Combine(basePath, MergeImageOutPut.Target);
                    string dirName = newFile.Substring(0, newFile.LastIndexOf('\\'));

                    if (!Directory.Exists(dirName))
                    {
                        Directory.CreateDirectory(dirName);
                    }

                    image.Save(newFile);
                }
                catch (Exception ex)
                {
                    return(ex.ToString());
                }

                list.Clear();
                progressForm.AddProgressValue(1, string.Format("图片合成导出完毕"));
            }

            return(null);
        }