Пример #1
0
        /// <summary>
        /// Initialization
        /// </summary>
        /// <param name="owner"></param>
        public void Initialize(XnaItems xnaItems, Control owner)
        {
            //SetStyle(ControlStyles.AllPaintingInWmPaint |
            //    ControlStyles.UserPaint | ControlStyles.DoubleBuffer, true);

            // Keep reference to owner form
            Owner = owner;

            drawingContext  = xnaItems.DrawingContext;
            lineBatch       = xnaItems.LineBatch;
            this.SpriteFont = xnaItems.FontManager.GetFont("SpriteFont").Font;

            // set default tool
            _activeTool = Xna2dDrawToolType.Pointer;

            // create list of graphic objects
            _graphicsList = new XnaGraphicsList();

            // create array of drawing tools
            _tools = new Tool[(int)Xna2dDrawToolType.NumberOfDrawTools];
            _tools[(int)Xna2dDrawToolType.Pointer]   = new ToolPointer();
            _tools[(int)Xna2dDrawToolType.Rectangle] = new ToolRectangle();
            _tools[(int)Xna2dDrawToolType.Ellipse]   = new ToolEllipse();
            _tools[(int)Xna2dDrawToolType.Line]      = new ToolLine();
            _tools[(int)Xna2dDrawToolType.Polygon]   = new ToolPolygon();
            _tools[(int)Xna2dDrawToolType.Text]      = new XnaToolText();
            _tools[(int)Xna2dDrawToolType.Bitmap]    = new ToolImage();
            _tools[(int)Xna2dDrawToolType.Pan]       = new ToolPan();
            _tools[(int)Xna2dDrawToolType.Path]      = new XnaToolPath();

            System.Drawing.Graphics g = Owner.CreateGraphics();
            XnaDrawObject.Dpi = new Point((int)1, (int)1);

            Create2DProjectionMatrix();
        }
Пример #2
0
        public XnaGraphics(GraphicsDevice graphicsDevice, XnaDrawingContext drawContext)
        {
            this.graphicsDevice = graphicsDevice;
            this.drawingContext = drawContext;
            this.SpriteBatch    = new Microsoft.Xna.Framework.Graphics.SpriteBatch(graphicsDevice);

            polyRasterizer = new BasicPrimitiveRendering.PrimitiveRasterizer(this.GraphicsDevice, this.SpriteBatch);
        }
Пример #3
0
 /// <summary>
 ///  Draw group selection rectangle
 /// </summary>
 /// <param name="g"></param>
 public void DrawNetSelection(XnaDrawingContext g)
 {
     if (!DrawNetRectangle)
     {
         return;
     }
     //var r = new System.Drawing.Rectangle(Convert.ToInt32(NetRectangle.X), Convert.ToInt32(NetRectangle.Y),
     //    Convert.ToInt32(NetRectangle.Width), Convert.ToInt32(NetRectangle.Height));
     g.DrawRectangle(NetRectangle, Color.Black);
     //ControlPaint.DrawFocusRectangle(g, r, System.Drawing.Color.Black, System.Drawing.Color.Transparent);
 }
Пример #4
0
        public void Draw(XnaDrawingContext g)
        {
            //var brush = new SolidBrush(System.Drawing.Color.FromArgb(255, 255, 255));
            var       brushColor      = Color.FromNonPremultiplied(255, 255, 255, 255);
            Rectangle clientRectangle = new Rectangle(ClientRectangle.X, ClientRectangle.Y, ClientRectangle.Width, ClientRectangle.Height);

            g.DrawFilledRectangle(clientRectangle, brushColor);
            // draw rect svg size
            var penColor = Color.FromNonPremultiplied(0, 0, 255, 255);

            //var pen = new Pen(System.Drawing.Color.FromArgb(0, 0, 255), 1);
            g.DrawRectangle(0, 0, SizePicture.X, SizePicture.Y, penColor);
            if (_graphicsList != null)
            {
                _graphicsList.Draw(g);
            }
            //brush.Dispose();
        }
Пример #5
0
        public void Draw(XnaDrawingContext g)
        {
            int           n = _graphicsList.Count;
            XnaDrawObject o;

            // Enumerate list in reverse order
            // to get first object on the top
            for (int i = n - 1; i >= 0; i--)
            //for (int i = 0; i < graphicsList.Count; i++ )
            {
                o = (XnaDrawObject)_graphicsList[i];

                o.Draw(g);

                if (o.Selected)
                {
                    o.DrawTracker(g);
                }
            }
        }
Пример #6
0
        public void Initialize(IntPtr handle, int width, int height)
        {
            graphicsDeviceService = GraphicsDeviceService.AddRef(handle,
                                                                 width,
                                                                 height);

            // Register the service, so components like ContentManager can find it.
            services.AddService <IGraphicsDeviceService>(graphicsDeviceService);

            contentBuilder = new ContentBuilder(ProjectContentFolder, false);

            contentManager = new ContentManager(this.Services,
                                                contentBuilder.OutputDirectory);

            modelManager = new XnaModelManager(contentBuilder, contentManager, OriginalContentFolder);

            texture2dManager = new XnaTexture2dManager(contentBuilder, contentManager, OriginalContentFolder);

            fontManager = new XnaFontManager(contentBuilder, contentManager, OriginalContentFolder);

            effectManager = new XnaEffectManager(contentBuilder, contentManager, OriginalContentFolder);

            spriterManager = new XnaSpriterManager(contentBuilder, contentManager, OriginalContentFolder);

            RefreshLists();

            FyriEffect roundlineEffect = effectManager.GetEffect("RoundLine");
            FyriFont   roundlineFont   = fontManager.GetFont("SpriteFont");

            roundLineManager = new RoundLineManager();
            roundLineManager.Init(this.graphicsDeviceService.GraphicsDevice, roundlineEffect.Effect);

            lineBatch = new XnaLine2dBatch();
            lineBatch.Init(this.graphicsDeviceService.GraphicsDevice, roundlineEffect.Effect);

            drawingContext = new XnaDrawingContext(this.graphicsDeviceService.GraphicsDevice);

            IsInitialized = true;
        }
Пример #7
0
        public void LoadContent()
        {
            PresentationParameters pp = GraphicsDevice.PresentationParameters;
            int bufferWidth           = pp.BackBufferWidth;
            int bufferHeight          = pp.BackBufferHeight;

            drawingTexture = new DrawingTexture(GraphicsDevice, bufferWidth, bufferHeight);
            drawingTexture.Clear(Microsoft.Xna.Framework.Color.White);

            XnaDrawingContext drawingContext = drawingTexture.DrawingContext;

            drawingContext.Begin();
            drawingContext.DrawLine(10, 20, 100, 20, Microsoft.Xna.Framework.Color.Red);
            drawingContext.DrawRectangle(120, 10, 100, 20, Microsoft.Xna.Framework.Color.Blue);
            drawingContext.DrawTriangle(240, 10, 240, 60, 200, 60, Microsoft.Xna.Framework.Color.Black);
            drawingContext.DrawEllipse(310, 10, 50, 50, Microsoft.Xna.Framework.Color.Green);
            drawingContext.DrawTexture(texture, new Vector2(10, 300), Microsoft.Xna.Framework.Color.White);
            drawingContext.DrawPolyline(new Vector2[] { new Vector2(410, 10), new Vector2(440, 10), new Vector2(420, 20), new Vector2(440, 40), new Vector2(410, 60) }, Microsoft.Xna.Framework.Color.Aqua);
            drawingContext.DrawFilledRectangle(120, 110, 50, 50, Microsoft.Xna.Framework.Color.Blue);
            drawingContext.DrawFilledTriangle(240, 110, 240, 160, 200, 160, Microsoft.Xna.Framework.Color.Brown);
            drawingContext.DrawFilledEllipse(310, 110, 80, 40, Microsoft.Xna.Framework.Color.Green);
            drawingContext.DrawText(SpriteFont, "Hello World!", new Vector2(120, 300), Microsoft.Xna.Framework.Color.Black);
            drawingContext.End();
        }
Пример #8
0
        public void RefreshProject()
        {
            //ProjectNameNode.Text = "Project Name";

            //ProjectNameNode.Nodes.Clear();

            Canvas.XnaGraphics    = null;
            Canvas.DrawingBatch   = null;
            Canvas.DrawingContext = null;
            Canvas.LineBatch      = null;
            Canvas.SpriteFont     = null;
            Canvas.Effect         = null;
            Canvas.Texture        = null;

            if (xnaGraphics != null)
            {
                xnaGraphics = null;
            }

            if (drawingContext != null)
            {
                drawingContext = null;
            }

            if (drawingBatch != null)
            {
                drawingBatch = null;
            }

            if (lineBatch != null)
            {
                lineBatch = null;
            }

            if (effectManager != null)
            {
                effectManager = null;
            }

            if (fontManager != null)
            {
                fontManager = null;
            }

            if (texture2dManager != null)
            {
                texture2dManager = null;
            }

            if (modelManager != null)
            {
                modelManager = null;
            }

            if (contentManager != null)
            {
                contentManager.Unload();
                contentManager.Dispose();
                contentManager = null;
            }

            if (contentBuilder != null)
            {
                contentBuilder.Clear();
                contentBuilder.Dispose();
                contentBuilder = null;
            }

            if (currentProject != null)
            {
                //ProjectNameNode.Text = currentProject.ProjectName;

                contentBuilder = new ContentBuilder(currentProject.ProjectContentFolder, false);

                contentManager = new ContentManager(this.Services,
                                                    contentBuilder.OutputDirectory);

                modelManager = new XnaModelManager(contentBuilder, contentManager, currentProject.OriginalContentFolder);

                texture2dManager = new XnaTexture2dManager(contentBuilder, contentManager, currentProject.OriginalContentFolder);

                fontManager = new XnaFontManager(contentBuilder, contentManager, currentProject.OriginalContentFolder);

                effectManager = new XnaEffectManager(contentBuilder, contentManager, currentProject.OriginalContentFolder);


                //roundLineTechniqueNames = roundLineManager.TechniqueNames;

                //ProjectNameNode.Nodes.Clear();
                ModelNode     = null;
                Texture2dNode = null;
                FontNode      = null;
                EffectNode    = null;

                //effectViewerControl.Effect = null;

                if (currentProject.LoadedModels.Count > 0)
                {
                    currentProject.LoadedModels = modelManager.RefreshList(currentProject.LoadedModels);

                    //foreach (FyriModel model in currentProject.LoadedModels)
                    //{
                    //    AddModelToTreeView(model);
                    //}
                }
                else
                {
                    //Load default Sphere
                    string defSphereFileName = Directory.GetCurrentDirectory() + "\\Default\\Sphere.fbx";
                    if (File.Exists(defSphereFileName))
                    {
                        LoadModelToProject(defSphereFileName);
                    }
                }

                if (currentProject.LoadedTexture2ds.Count > 0)
                {
                    currentProject.LoadedTexture2ds = texture2dManager.RefreshList(currentProject.LoadedTexture2ds);

                    //foreach (FyriTexture2d texture in currentProject.LoadedTexture2ds)
                    //{
                    //    AddTexture2dToTreeView(texture);
                    //}
                }
                else
                {
                    //Load default Sphere
                    string defTulipsPngFileName = Directory.GetCurrentDirectory() + "\\Default\\Tulips.png";
                    if (File.Exists(defTulipsPngFileName))
                    {
                        LoadTexture2dToProject(defTulipsPngFileName);
                    }
                }

                if (currentProject.LoadedFonts.Count > 0)
                {
                    currentProject.LoadedFonts = fontManager.RefreshList(currentProject.LoadedFonts);

                    //foreach (FyriFont font in currentProject.LoadedFonts)
                    //{
                    //    AddFontToTreeView(font);
                    //}
                }
                else
                {
                    //Load default Sphere
                    string defSpriteFontFileName = Directory.GetCurrentDirectory() + "\\Default\\SpriteFont.spritefont";
                    if (File.Exists(defSpriteFontFileName))
                    {
                        LoadFontToProject(defSpriteFontFileName);
                    }

                    string defSegoeFontFileName = Directory.GetCurrentDirectory() + "\\Default\\SegoeUI.spritefont";
                    if (File.Exists(defSegoeFontFileName))
                    {
                        LoadFontToProject(defSegoeFontFileName);
                    }
                }

                if (currentProject.LoadedEffects.Count > 0)
                {
                    currentProject.LoadedEffects = effectManager.RefreshList(currentProject.LoadedEffects);

                    //foreach (FyriEffect effect in currentProject.LoadedEffects)
                    //{
                    //    AddEffectToTreeView(effect);
                    //}
                }
                else
                {
                    //Load default Sphere
                    string defRLEffectFileName = Directory.GetCurrentDirectory() + "\\Default\\RoundLine.fx";
                    if (File.Exists(defRLEffectFileName))
                    {
                        LoadEffectToProject(defRLEffectFileName);
                    }
                }

                FyriEffect    roundlineEffect = effectManager.GetEffect("RoundLine");
                FyriFont      roundlineFont   = fontManager.GetFont("SpriteFont");
                FyriFont      segoeUIFont     = fontManager.GetFont("SegoeUI");
                FyriTexture2d tulipsPng       = texture2dManager.GetTexture2d("Tulips");

                lineBatch = new XnaLine2dBatch();
                lineBatch.Init(this.graphicsDeviceService.GraphicsDevice, roundlineEffect.Effect);

                drawingBatch   = new XnaDrawingBatch(this.graphicsDeviceService.GraphicsDevice);
                drawingContext = new XnaDrawingContext(this.graphicsDeviceService.GraphicsDevice);

                xnaGraphics = new XnaGraphics(this.graphicsDeviceService.GraphicsDevice, drawingContext);

                PDefaults.DefaultGraphics   = xnaGraphics;
                PDefaults.DefaultSpriteFont = fontManager.GetFont("SpriteFont").Font;

                Canvas.SpriteFont     = segoeUIFont.Font;
                Canvas.Effect         = roundlineEffect.Effect;
                Canvas.Texture        = tulipsPng.Texture;
                Canvas.DrawingBatch   = drawingBatch;
                Canvas.DrawingContext = drawingContext;
                Canvas.LineBatch      = lineBatch;
                Canvas.XnaGraphics    = xnaGraphics;
            }
        }
Пример #9
0
        public void RefreshProject()
        {
            //ProjectNameNode.Text = "Project Name";

            //ProjectNameNode.Nodes.Clear();

            xnaToolBox1.ToolSelectionChanged   += SetTool;
            xna2dShapeControl1.ItemsSelected   += ItemsSelected;
            propertyGrid1.PropertyValueChanged += new PropertyValueChangedEventHandler(propertyGrid1_PropertyValueChanged);

            xna2dShapeControl1.Project          = null;
            xna2dShapeControl1.TextureManager   = null;
            xna2dShapeControl1.RoundLineManager = null;
            xna2dShapeControl1.LineBatch        = null;
            xna2dShapeControl1.SpriteFont       = null;
            xna2dShapeControl1.Effect           = null;
            xna2dShapeControl1.DrawingContext   = null;

            if (drawingContext != null)
            {
                drawingContext = null;
            }

            if (roundLineManager != null)
            {
                roundLineManager = null;
            }

            if (lineBatch != null)
            {
                lineBatch = null;
            }

            if (effectManager != null)
            {
                effectManager = null;
            }

            if (fontManager != null)
            {
                fontManager = null;
            }

            if (texture2dManager != null)
            {
                texture2dManager = null;
            }

            if (modelManager != null)
            {
                modelManager = null;
            }

            if (contentManager != null)
            {
                contentManager.Unload();
                contentManager.Dispose();
                contentManager = null;
            }

            if (contentBuilder != null)
            {
                contentBuilder.Clear();
                contentBuilder.Dispose();
                contentBuilder = null;
            }

            if (currentProject != null)
            {
                //ProjectNameNode.Text = currentProject.ProjectName;

                contentBuilder = new ContentBuilder(currentProject.ProjectContentFolder, false);

                contentManager = new ContentManager(this.Services,
                                                    contentBuilder.OutputDirectory);

                modelManager = new XnaModelManager(contentBuilder, contentManager, currentProject.OriginalContentFolder);

                texture2dManager = new XnaTexture2dManager(contentBuilder, contentManager, currentProject.OriginalContentFolder);

                fontManager = new XnaFontManager(contentBuilder, contentManager, currentProject.OriginalContentFolder);

                effectManager = new XnaEffectManager(contentBuilder, contentManager, currentProject.OriginalContentFolder);


                //roundLineTechniqueNames = roundLineManager.TechniqueNames;

                //ProjectNameNode.Nodes.Clear();
                ModelNode     = null;
                Texture2dNode = null;
                FontNode      = null;
                EffectNode    = null;

                //effectViewerControl.Effect = null;

                if (currentProject.LoadedModels.Count > 0)
                {
                    currentProject.LoadedModels = modelManager.RefreshList(currentProject.LoadedModels);

                    //foreach (FyriModel model in currentProject.LoadedModels)
                    //{
                    //    AddModelToTreeView(model);
                    //}
                }
                else
                {
                    //Load default Sphere
                    string defSphereFileName = Directory.GetCurrentDirectory() + "\\Default\\Sphere.fbx";
                    if (File.Exists(defSphereFileName))
                    {
                        LoadModelToProject(defSphereFileName);
                    }
                }

                if (currentProject.LoadedTexture2ds.Count > 0)
                {
                    currentProject.LoadedTexture2ds = texture2dManager.RefreshList(currentProject.LoadedTexture2ds);

                    //foreach (FyriTexture2d texture in currentProject.LoadedTexture2ds)
                    //{
                    //    AddTexture2dToTreeView(texture);
                    //}
                }

                if (currentProject.LoadedFonts.Count > 0)
                {
                    currentProject.LoadedFonts = fontManager.RefreshList(currentProject.LoadedFonts);

                    //foreach (FyriFont font in currentProject.LoadedFonts)
                    //{
                    //    AddFontToTreeView(font);
                    //}
                }
                else
                {
                    //Load default Sphere
                    string defSpriteFontFileName = Directory.GetCurrentDirectory() + "\\Default\\SpriteFont.spritefont";
                    if (File.Exists(defSpriteFontFileName))
                    {
                        LoadFontToProject(defSpriteFontFileName);
                    }
                }

                if (currentProject.LoadedEffects.Count > 0)
                {
                    currentProject.LoadedEffects = effectManager.RefreshList(currentProject.LoadedEffects);

                    //foreach (FyriEffect effect in currentProject.LoadedEffects)
                    //{
                    //    AddEffectToTreeView(effect);
                    //}
                }
                else
                {
                    //Load default Sphere
                    string defRLEffectFileName = Directory.GetCurrentDirectory() + "\\Default\\RoundLine.fx";
                    if (File.Exists(defRLEffectFileName))
                    {
                        LoadEffectToProject(defRLEffectFileName);
                    }
                }

                FyriEffect roundlineEffect = effectManager.GetEffect("RoundLine");
                FyriFont   roundlineFont   = fontManager.GetFont("SpriteFont");

                roundLineManager = new RoundLineManager();
                roundLineManager.Init(this.graphicsDeviceService.GraphicsDevice, roundlineEffect.Effect);

                lineBatch = new XnaLine2dBatch();
                lineBatch.Init(this.graphicsDeviceService.GraphicsDevice, roundlineEffect.Effect);

                drawingContext = new XnaDrawingContext(this.graphicsDeviceService.GraphicsDevice);


                xna2dShapeControl1.ShapeProperties  = this.propertyGrid1;
                xna2dShapeControl1.ToolBox          = this.xnaToolBox1;
                xna2dShapeControl1.RoundLineManager = roundLineManager;
                xna2dShapeControl1.LineBatch        = lineBatch;
                xna2dShapeControl1.SpriteFont       = roundlineFont.Font;
                xna2dShapeControl1.Effect           = roundlineEffect.Effect;
                xna2dShapeControl1.DrawingContext   = drawingContext;
                xna2dShapeControl1.TextureManager   = texture2dManager;
                xna2dShapeControl1.Project          = currentProject;
            }
        }
 public ContextEventArgs(XnaDrawingContext oldValue, XnaDrawingContext newValue)
 {
     this.oldValue = oldValue;
     this.newValue = newValue;
 }