Exemplo n.º 1
0
        private void OnAnalyzerUpdateRemoteScreen(object sender, EventArgs e)
        {
            RFECommunicator objRFE = (RFECommunicator)sender;

            RFEScreenData objData = objRFE.ScreenData.GetData((UInt16)objRFE.ScreenIndex);

            if (objData != null)
            {
                m_ToolGroup_RemoteScreen.UpdateNumericControls();
                //Update button status but first time only to minimize overhead
                if (objRFE.ScreenIndex == 1)
                {
                    UpdateButtonStatus();
                }

                if (m_MainTab.SelectedTab == m_tabRemoteScreen)
                {
                    m_tabRemoteScreen.Invalidate();
                }

                if (m_ToolGroup_RemoteScreen.CaptureDumpScreen == false)
                {
                    m_ToolGroup_RemoteScreen.CaptureDumpScreen = true;
                }
            }
        }
        private void RemoteScreenControl_Paint(object sender, PaintEventArgs e)
        {
            if (m_nZoom == -1)
            {
                return; //uninitialized
            }
            Pen   objPen   = m_PenDarkBlue;
            Brush objBrush = m_BrushDarkBlue;

            if (!LCDColor)
            {
                objBrush = m_BrushBlack;
                objPen   = m_PenBlack;
                e.Graphics.FillRectangle(m_BrushWhite, m_AdjustedClientRect);
            }
            else
            {
                e.Graphics.FillRectangle(m_BrushlinGrBrush, m_AdjustedClientRect);
            }

            e.Graphics.DrawRectangle(objPen, m_AdjustedClientRect);

            if (m_objRFE == null)
            {
                return;
            }

            RFEScreenData objScreen = m_objRFE.ScreenData.GetData(m_objRFE.ScreenIndex);

            if ((m_objRFE.ScreenIndex == 0) || (objScreen == null))
            {
                m_ImageLogo.Visible = true;

                m_ImageLogo.Width    = (int)(0.8 * m_AdjustedClientRect.Width);
                m_ImageLogo.Height   = (int)(m_ImageLogo.Width * (double)m_ImageLogo.Image.Height / (double)m_ImageLogo.Image.Width);
                m_ImageLogo.Location = new System.Drawing.Point((int)(0.1 * m_AdjustedClientRect.Width),
                                                                (m_AdjustedClientRect.Height - m_ImageLogo.Height) / 2);
                return;
            }

            if ((m_objRFE.ScreenIndex > 0) && (HeaderText))
            {
                m_ImageLogo.Visible = true;

                m_ImageLogo.Width    = (int)(0.6 * m_AdjustedClientRect.Width);
                m_ImageLogo.Height   = (int)(m_ImageLogo.Width * (double)m_ImageLogo.Image.Height / (double)m_ImageLogo.Image.Width);
                m_ImageLogo.Location = new System.Drawing.Point((int)(0.2 * m_AdjustedClientRect.Width), 0);

                if (objScreen.CaptureTime.Year > 2000)
                {
                    //Draw time and model captured only if information available is current
                    string sText         = "Screen captured " + objScreen.CaptureTime.ToString("yyyy-MM-dd HH:mm:ss\\.fff") + " - model " + objScreen.Model.ToString().Replace("MODEL_", "");
                    SizeF  objStringSize = e.Graphics.MeasureString(sText, m_TextFont);
                    e.Graphics.DrawString(sText, m_TextFont, m_BrushLightBlue, (m_AdjustedClientRect.Width - objStringSize.Width) / 2, m_ImageLogo.Bottom);
                }
            }
            else
            {
                m_ImageLogo.Visible = false;
            }

            int nGap = 1;

            if ((m_nZoom <= 4) || (LCDGrid == false))
            {
                nGap = 0;
            }

            /*
             * only for video, too blurry for static image
             * else
             * objGraphics.SmoothingMode = SmoothingMode.AntiAlias;
             */

            int nAdjustHeader = 20;

            if (!HeaderText)
            {
                nAdjustHeader = 0;
            }

            for (int nIndY = 0; nIndY < 8; nIndY++)
            {
                for (int nIndX = 0; nIndX < 128; nIndX++)
                {
                    for (byte nBit = 0; nBit < 8; nBit++)
                    {
                        byte nVal = 0x01;
                        nVal = (byte)(nVal << nBit);
                        byte nData = objScreen.GetByte(nIndX + 128 * nIndY);
                        nVal = (byte)(nVal & nData);
                        if (nVal != 0)
                        {
                            e.Graphics.FillRectangle(objBrush, (nIndX + 1) * m_nZoom, (nIndY * 8 + nBit + 1 + nAdjustHeader) * m_nZoom, m_nZoom - nGap, m_nZoom - nGap);
                        }
                    }
                }
            }
        }