private void DoPaint() { if (_rendering) return; _rendering = true; var buffer = new Bitmap(800, 800); var g = myBuffer.Graphics; //ThreadPool.QueueUserWorkItem(x => // { // var gg = CreateGraphics(); // gg.FillRectangle(new SolidBrush(Color.DarkKhaki), new Rectangle(0, 0, 800, 800)); // }); //RenderBuffer = new Bitmap(800,800); //GraphicsDevice = Graphics.FromImage(RenderBuffer); g.FillRectangle(new SolidBrush(Color.DarkKhaki), new Rectangle(0, 0, 800, 800)); HqRenderer = new HeadQuaterRenderer(buffer, g); BarrackRenderer = new BarrackRenderer(buffer, g); InfanteryRenderer = new InfanteryRenderer(buffer, g); HarvesterRenderer = new HarvesterRenderer(buffer, g); var components = GetComponents(); foreach (var component in components) { var aiColor = GetAiColor(component.OwnerId); if (component is HeadQuater) { HqRenderer.Render(component as HeadQuater, aiColor); } if (component is Barrack) { BarrackRenderer.Render(component as Barrack, aiColor); } if (component is Infantery) { if (_renderWayPointPaths) { RenderWayPointPath(component); } InfanteryRenderer.Render(component as Infantery, aiColor); } if (component is Harvester) { HarvesterRenderer.Render(component as Harvester, aiColor); } } //g = CreateGraphics(); //g.DrawImage(buffer, new Rectangle(0, 0, Width, Height)); myBuffer.Render(); _rendering = false; }
private void Start() { RenderTarget = new PictureBox { Dock = DockStyle.Fill }; RenderBuffer = new Bitmap(800, 800); GraphicsDevice = Graphics.FromImage(RenderBuffer); Controls.Clear(); Controls.Add(RenderTarget); HqRenderer = new HeadQuaterRenderer(RenderBuffer, GraphicsDevice); BarrackRenderer = new BarrackRenderer(RenderBuffer, GraphicsDevice); InfanteryRenderer = new InfanteryRenderer(RenderBuffer, GraphicsDevice); HarvesterRenderer = new HarvesterRenderer(RenderBuffer, GraphicsDevice); GameStateService = new GameStateService(); DoubleBuffered = true; GameThread = new Thread(Work) {IsBackground = true}; GameThread.Start(); DrawThread = new Thread(Draw) { IsBackground = true, Priority = ThreadPriority.AboveNormal}; DrawThread.Start(); }