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