/// <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(); }
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); }
/// <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); }
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(); }
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); } } }
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; }
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(); }
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; } }
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; }