⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 numberdisplay.cpp

📁 此程序实现了类似protel电路画图程序。
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	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 + -