protected override void OnPaint( PaintEventArgs e )
{
base.OnPaint( e );
if ( m_Bitmap != null )
e.Graphics.DrawImage( m_Bitmap, 0, 0 );
if ( m_CameraCalibration == null )
return;
int X0 = 10;
int X1 = Width - 10;
int Y0 = Height - 10;
Point P = PointToClient( Control.MousePosition );
float x = (float) (P.X - X0) / (X1 - X0);
float StandardReflectance = x;//0.02f + (0.99f - 0.02f) * x;
for ( int i=1; i < m_CameraCalibration.m_Reflectances.Length; i++ )
{
if ( StandardReflectance < m_CameraCalibration.m_Reflectances[i-1].StandardReflectance || StandardReflectance > m_CameraCalibration.m_Reflectances[i].StandardReflectance )
continue;
float t = (StandardReflectance - m_CameraCalibration.m_Reflectances[i-1].StandardReflectance) / (m_CameraCalibration.m_Reflectances[i].StandardReflectance - m_CameraCalibration.m_Reflectances[i-1].StandardReflectance);
float Y = m_CameraCalibration.m_Reflectances[i-1].m_LuminanceMeasured + t * (m_CameraCalibration.m_Reflectances[i].m_LuminanceMeasured - m_CameraCalibration.m_Reflectances[i-1].m_LuminanceMeasured);
string LumText = "Reflectance=" + (100.0f * StandardReflectance).ToString( "G4" ) + "%";
SizeF S = e.Graphics.MeasureString( LumText, Font );
float TextOffsetX = P.X < 0.5f * Width ? 0 : -S.Width - 6;
float TextOffsetY = P.Y < 0.5f * Height ? 40 : 0;
e.Graphics.DrawString( "Y=" + Y.ToString( "G4" ), Font, Brushes.Black, TextOffsetX + P.X + 6, TextOffsetY + P.Y - 24);
e.Graphics.DrawString( LumText, Font, Brushes.Black, TextOffsetX + P.X + 6, TextOffsetY + P.Y - 16 );
break;
}
}