Пример #1
0
        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...");
        }
Пример #2
0
        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...");
        }
Пример #3
0
        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;
            }
        }