📄 numberdisplay.cpp
字号:
point.y = m_Hight-m_BottomDistance;
DrawUpHeng( pDC,point,LogPenText );
DrawMidHeng( pDC,point,LogPenText );
DrawLeftUpShu( pDC,point,LogPenText );
DrawRightDownShu( pDC,point,LogPenText );
DrawDownHeng( pDC,point,LogPenText );
}
void NumberDisplay::Draw6( CDC *pDC,int j )
{
DrawBottomPicture( pDC,j );
CPoint point ;
point.x = m_Width-m_FontToWindowDistance-j*m_FontWidth-(j-1 )*m_FontToWindowDistance/2;
point.y = m_Hight-m_BottomDistance;
DrawUpHeng( pDC,point,LogPenText );
DrawMidHeng( pDC,point,LogPenText );
DrawLeftUpShu( pDC,point,LogPenText );
DrawLeftDownShu( pDC,point,LogPenText );
DrawRightDownShu( pDC,point,LogPenText );
DrawDownHeng( pDC,point,LogPenText );
}
void NumberDisplay::Draw7( CDC *pDC,int j )
{
DrawBottomPicture( pDC,j );
CPoint point ;
point.x = m_Width-m_FontToWindowDistance-j*m_FontWidth-(j-1 )*m_FontToWindowDistance/2;
point.y = m_Hight-m_BottomDistance;
DrawUpHeng( pDC,point,LogPenText );
DrawRightUpShu( pDC,point,LogPenText );
DrawRightDownShu( pDC,point,LogPenText );
}
void NumberDisplay::Draw8( CDC *pDC,int j )
{
DrawBottomPicture( pDC,j );
CPoint point ;
point.x = m_Width-m_FontToWindowDistance-j*m_FontWidth-(j-1 )*m_FontToWindowDistance/2;
point.y = m_Hight-m_BottomDistance;
DrawUpHeng( pDC,point,LogPenText );
DrawMidHeng( pDC,point,LogPenText );
DrawLeftUpShu( pDC,point,LogPenText );
DrawLeftDownShu( pDC,point,LogPenText );
DrawRightUpShu( pDC,point,LogPenText );
DrawRightDownShu( pDC,point,LogPenText );
DrawDownHeng( pDC,point,LogPenText );
}
void NumberDisplay::DrawBottomPicture( CDC *pDC,int j )
{
CPoint point ;
point.x = m_Width-m_FontToWindowDistance-j*m_FontWidth-(j-1 )*m_FontToWindowDistance/2;
point.y = m_Hight-m_BottomDistance;
DrawUpHeng( pDC,point,LogPen8 );
DrawMidHeng( pDC,point,LogPen8 );
DrawLeftUpShu( pDC,point,LogPen8 );
DrawLeftDownShu( pDC,point,LogPen8 );
DrawRightUpShu( pDC,point,LogPen8 );
DrawRightDownShu( pDC,point,LogPen8 );
DrawDownHeng( pDC,point,LogPen8 );
}
void NumberDisplay::Draw9( CDC *pDC,int j )
{
DrawBottomPicture( pDC,j );
CPoint point ;
point.x = m_Width-m_FontToWindowDistance-j*m_FontWidth-(j-1 )*m_FontToWindowDistance/2;
point.y = m_Hight-m_BottomDistance;
DrawUpHeng( pDC,point,LogPenText );
DrawMidHeng( pDC,point,LogPenText );
DrawLeftUpShu( pDC,point,LogPenText );
DrawRightUpShu( pDC,point,LogPenText );
DrawRightDownShu( pDC,point,LogPenText );
DrawDownHeng( pDC,point,LogPenText );
}
void NumberDisplay::DrawUpHeng( CDC *pDC,CPoint point,LOGPEN logPen )
{
CPen pen,*pPen;
pen.CreatePenIndirect( &logPen );
pPen = pDC->SelectObject( &pen );
point.x = point.x+m_HengToShuDistance;
point.y = point.y-m_FontHight;
int i = 0;
int width = m_HengWidth;
while ( i<=m_HengHight )
{
pDC->MoveTo( point );
pDC->LineTo( point.x+width-m_HengToShuDistance-i,point.y );
point.x = point.x+1;
width--;
point.y = point.y+1;
i++;
}
pDC->SelectObject( pPen );
DeleteObject( pen );
}
void NumberDisplay::DrawDownHeng( CDC *pDC,CPoint point,LOGPEN logPen )
{
CPen pen,*pPen;
pen.CreatePenIndirect( &logPen );
pPen = pDC->SelectObject( &pen );
int i = 0;
point.x = point.x+m_HengToShuDistance;
int width = m_HengWidth;
while ( i<=m_HengHight )
{
pDC->MoveTo( point );
pDC->LineTo( point.x+width-m_HengToShuDistance-i,point.y );
point.x = point.x+1;
width--;
point.y = point.y-1;
i++;
}
pDC->SelectObject( pPen );
DeleteObject( pen );
}
void NumberDisplay::DrawMidHeng( CDC *pDC,CPoint point,LOGPEN logPen )
{
CPen pen,*pPen;
pen.CreatePenIndirect( &logPen );
pPen = pDC->SelectObject( &pen );
CPoint point1;
point1.x = point.x+m_HengToShuDistance;
point1.y = point.y-m_FontHight/2;
int i = 0;
int width = m_HengWidth;
while ( i<=m_HengHight/2 )
{
pDC->MoveTo( point1 );
pDC->LineTo( point1.x+width-m_HengToShuDistance-i,point1.y );
point1.x = point1.x+1;
width--;
point1.y = point1.y+1;
i++;
}
i = 0;
width = m_HengWidth;
point1.x = point.x+m_HengToShuDistance;
point1.y = point.y-m_FontHight/2;
while ( i<=m_HengHight/2 )
{
pDC->MoveTo( point1 );
pDC->LineTo( point1.x+width-m_HengToShuDistance-i,point1.y );
point1.x = point1.x+1;
width--;
point1.y = point1.y-1;
i++;
}
pDC->SelectObject( pPen );
DeleteObject( pen );
}
void NumberDisplay::DrawLeftUpShu( CDC *pDC,CPoint point,LOGPEN logPen )
{
CPen pen,*pPen;
pen.CreatePenIndirect( &logPen );
pPen = pDC->SelectObject( &pen );
point.x = point.x;
point.y = point.y-m_FontHight+m_HengToShuDistance;
int i = 0;
int hight = m_ShuHight;
while ( i<=m_ShuWidth )
{
pDC->MoveTo( point );
pDC->LineTo( point.x,point.y+hight-i );
point.x = point.x+1;
hight--;
point.y = point.y+1;
i++;
}
pDC->SelectObject( pPen );
DeleteObject( pen );
}
void NumberDisplay::DrawLeftDownShu( CDC *pDC,CPoint point,LOGPEN logPen )
{
CPen pen,*pPen;
pen.CreatePenIndirect( &logPen );
pPen = pDC->SelectObject( &pen );
point.x = point.x;
point.y = point.y-m_HengToShuDistance;
int i = 0;
int hight = m_ShuHight;
while ( i<=m_ShuWidth )
{
pDC->MoveTo( point );
pDC->LineTo( point.x,point.y-hight+i );
point.x = point.x+1;
hight--;
point.y = point.y-1;
i++;
}
pDC->SelectObject( pPen );
DeleteObject( pen );
}
void NumberDisplay::DrawRightUpShu( CDC *pDC,CPoint point,LOGPEN logPen )
{
CPen pen,*pPen;
pen.CreatePenIndirect( &logPen );
pPen = pDC->SelectObject( &pen );
point.x = point.x+m_FontWidth-m_HengToShuDistance;
point.y = point.y-m_FontHight+m_HengToShuDistance;
int i = 0;
int hight = m_ShuHight;
while ( i<=m_ShuWidth )
{
pDC->MoveTo( point );
pDC->LineTo( point.x,point.y+hight-i );
point.x = point.x-1;
hight--;
point.y = point.y+1;
i++;
}
pDC->SelectObject( pPen );
DeleteObject( pen );
}
void NumberDisplay::DrawRightDownShu( CDC *pDC,CPoint point,LOGPEN logPen )
{
CPen pen,*pPen;
pen.CreatePenIndirect( &logPen );
pPen = pDC->SelectObject( &pen );
point.x = point.x+m_FontWidth-m_HengToShuDistance;
point.y = point.y-m_HengToShuDistance;
int i = 0;
int hight = m_ShuHight;
while ( i<=m_ShuWidth )
{
pDC->MoveTo( point );
pDC->LineTo( point.x,point.y-hight+i );
point.x = point.x-1;
hight--;
point.y = point.y-1;
i++;
}
pDC->SelectObject( pPen );
DeleteObject( pen );
}
void NumberDisplay::DrawPoint( int j,CDC *pDC )
{
DrawBottomPicture( pDC,j );
CPen pen,*pPen;
pen.CreatePenIndirect( &LogPenText );
pPen = pDC->SelectObject( &pen );
CPoint point;
point.x = m_Width-m_FontToWindowDistance-j*m_FontWidth-(j-1 )*m_FontToWindowDistance/2;
point.y = m_Hight-m_BottomDistance;
point.x = point.x+m_FontWidth;
point.y = point.y-m_HengToShuDistance/4;
pDC->Rectangle( point.x-2*m_ShuWidth,point.y-2*m_HengHight,
point.x,point.y );
pDC->FillSolidRect( point.x-2*m_ShuWidth,point.y-2*m_HengHight,
2*m_ShuWidth,2*m_HengHight,LogPenText.lopnColor );
pDC->SelectObject( pPen );
DeleteObject( pen );
}
void NumberDisplay::DrawDoublePoint( int j,CDC *pDC )
{
DrawBottomPicture( pDC,j );
CPen pen,*pPen;
pen.CreatePenIndirect( &LogPenText );
pPen = pDC->SelectObject( &pen );
CPoint point,point1 ;
point.x = m_Width-m_FontToWindowDistance-j*m_FontWidth-(j-1 )*m_FontToWindowDistance/2;
point.y = m_Hight-m_BottomDistance;
point1.x = point.x+m_FontWidth;
point1.y = point.y-m_FontHight/3;
pDC->Rectangle( point1.x-2*m_ShuWidth,point1.y,
point1.x,point1.y+2*m_HengHight );
pDC->FillSolidRect( point1.x-2*m_ShuWidth,point1.y,
2*m_ShuWidth,2*m_HengHight,LogPenText.lopnColor );
point1.x = point.x+m_FontWidth;
point1.y = point.y-m_FontHight/3*2;
pDC->Rectangle( point1.x-2*m_ShuWidth,point1.y-2*m_HengHight,
point1.x,point1.y );
pDC->FillSolidRect( point1.x-2*m_ShuWidth,point1.y-2*m_HengHight,
2*m_ShuWidth,2*m_HengHight,LogPenText.lopnColor );
pDC->SelectObject( pPen );
DeleteObject( pen );
}
BOOL NumberDisplay::PtInWindow( CPoint point )
{
CRect rect;
rect = CRect( m_LeftTopPoint.x,m_LeftTopPoint.y,m_LeftTopPoint.x+m_Width,m_LeftTopPoint.y+m_Hight );
if ( rect.PtInRect( point ) )
{
return TRUE;
}
return FALSE;
}
void NumberDisplay::ArithDragPosition( CPoint point )
{
if ( m_Num == 0 )
{
m_tempPoint = point-m_LeftTopPoint;
m_Num++;
}
else
{
m_LeftTopPoint = point-m_tempPoint;
}
}
void NumberDisplay::OnLButtonDown( UINT nFlags,CPoint point )
{
m_LFlag = TRUE;
if ( PtInWindow( point ) )
{
::SetCursor( ::LoadCursor( NULL,IDC_CROSS ) );
ArithDragPosition( point );
m_BeSelected = TRUE;
}
}
void NumberDisplay::OnLButtonUp( UINT nFlags,CPoint point )
{
m_LFlag = FALSE;
if ( m_BeSelected )
{
ArithDragPosition( point );
m_BeSelected = FALSE;
m_Num = 0;
m_tempPoint = CPoint( 0,0 );
}
}
void NumberDisplay::OnMouseMove( UINT nFlags,CPoint point )
{
if ( PtInWindow( point ) )
{
::SetCursor( ::LoadCursor( NULL,IDC_CROSS ) );
}
if ( m_LFlag )
{
if ( m_BeSelected )
{
::SetCursor( ::LoadCursor( NULL,IDC_CROSS ) );
ArithDragPosition( point );
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -