public DrawerWnd(CDrawer dr) { InitializeComponent(); // use the log as built from parent _log = dr._log; // save window size m_ciWidth = dr.m_ciWidth; m_ciHeight = dr.m_ciHeight; // cap delegates, this will be set by owner m_delRender = null; m_delMouseMove = null; m_delMouseLeftClick = null; m_delMouseRightClick = null; // cap/set references m_bgc = new BufferedGraphicsContext(); m_bg = null; // create the bitmap for the underlay and clear it to whatever colour m_bmUnderlay = new Bitmap(dr.m_ciWidth, dr.m_ciHeight); // docs say will use Format32bppArgb // fill the bitmap with the default drawer bb colour FillBB(Color.Black); // show that drawer is up and running _log.WriteLine("Drawer Started..."); }
public DrawerWnd(CDrawer dr) { InitializeComponent(); // use the log as built from parent _log = dr._log; // save window size m_ciWidth = dr.m_ciWidth; m_ciHeight = dr.m_ciHeight; // cap delegates, this will be set by owner m_delRender = null; m_delMouseMove = null; m_delMouseLeftClick = null; m_delMouseRightClick = null; // cap/set references m_bgc = new BufferedGraphicsContext(); m_bg = null; // create the bitmap for the underlay and clear it to whatever colour m_bmUnderlay = new Bitmap(dr.m_ciWidth, dr.m_ciHeight); // docs say will use Format32bppArgb // fill the bitmap with the default drawer bb colour FillBB(Color.Black); // show that drawer is up and running _log.WriteLine("Drawer Started..."); }
private void Render() { // check to ensure that there is actually a callback registered if (m_delRender != null) { // reset and start the stopwatch m_StopWatch.Reset(); m_StopWatch.Start(); // stop the timer, could be a long time for rendering UI_TIM_RENDER.Enabled = false; // copy the layover bitmap to the backbuffer for erasure/layover (eating mem) try { lock (m_bmUnderlay) m_bg.Graphics.DrawImage(m_bmUnderlay, new Point(0, 0)); } catch (Exception err) { _log.WriteLine("DrawerWnd::Render (Underlay) : " + err.Message); } // invoke controller class rendering... int iNumRendered = m_delRender(m_bg.Graphics); // flip bb to fb try { m_bg.Render(); } catch (Exception err) { _log.WriteLine("DrawerWnd::Render (Flip) : " + err.Message); } // stop the stopwatch m_StopWatch.Stop(); // do avarage calculation m_qRenderAvg.Enqueue(m_StopWatch.ElapsedMilliseconds); while (m_qRenderAvg.Count > 75) { m_qRenderAvg.Dequeue(); } double dTot = 0; foreach (long l in m_qRenderAvg) { dTot += l; } dTot = dTot / m_qRenderAvg.Count; // Show render time... if (iNumRendered == 1) { Text = sVersion + " - Render Time = " + dTot.ToString("f2") + "ms (" + iNumRendered.ToString() + " shape)"; } else { Text = sVersion + " - Render Time = " + dTot.ToString("f2") + "ms (" + iNumRendered.ToString() + " shapes)"; } // restart the timer UI_TIM_RENDER.Enabled = true; } }