MFC实现简易画图程序


MFC实现简易画图程序,可以画矩形,圆形,三角形,直线,点。可以旋转、放大、缩小、平移。
资源截图
代码片段和文件信息
// Circle.cpp: implementation of the CCircle class.
//
//////////////////////////////////////////////////////////////////////

#include “stdafx.h“
#include “Graphic.h“
#include “Circle.h“
#include “math.h“

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CCircle::CCircle()
{

}

CCircle::CCircle(UINT drawType  CPoint ptOrigin  CPoint ptEnd  COLORREF colorBorder  COLORREF colorFilled  int borderWidth) :
CGraph(drawType  ptOrigin  ptEnd  colorBorder  colorFilled  borderWidth ) 
{

}

void CCircle::draw( CDC* pDC )
{
/*设置画刷*/
CBrush *pBrush ;
if ( m_colorFilled == -1 )
pBrush = CBrush::FromHandle ( (HBRUSH)GetStockobject( NULL_BRUSH ) ) ;//创建透明的画刷
else
{
pBrush = new CBrush ;
pBrush->CreateSolidBrush( m_colorFilled ) ;
}
CBrush *pOldBrush = pDC->Selectobject( pBrush ) ; //将画刷选择到设备描述表当中
/*设置画刷*/
/*设置画笔*/
CPen pen( PS_SOLID  m_borderWidth  m_colorBorder ) ;
CPen *pOldPen = pDC->Selectobject( &pen ) ;
/*设置画笔*/

pDC->Ellipse( CRect( m_ptOrigin  m_ptEnd ) ) ; //画图

pDC->Selectobject( pOldBrush ) ;//释放画刷避免内存泄露
if( m_colorFilled != -1 )
delete pBrush ;
pDC->Selectobject( pOldPen ) ;
}

CPoint CCircle::getCenter( )
{
return CPoint( (m_ptOrigin.x + m_ptEnd.x) / 2  (m_ptOrigin.y + m_ptEnd.y) / 2 ) ;
}

CCircle::~CCircle()
{

}

void CCircle::rotateShun()
{
if ( m_drawType == 4 )
{
CPoint center( getCenter() ) ;
int x  y ;
x = static_cast(( m_ptOrigin.x - center.x ) * cos(pi/2) - ( m_ptOrigin.y - center.y ) * sin(pi/2)) + center.x ;
y = static_cast(( m_ptOrigin.x - center.x ) * sin(pi/2) + ( m_ptOrigin.y - center.y ) * cos(pi/2)) + center.y ;
m_ptOrigin.x = x ;
m_ptOrigin.y = y ;
x = static_cast(( m_ptEnd.x - center.x ) * cos(pi/2) - ( m_ptEnd.y - center.y ) * sin(pi/2)) + center.x ;
y = static_cast(( m_ptEnd.x - center.x ) * sin(pi/2) + ( m_ptEnd.y - center.y ) * cos(pi/2)) + center.y ;
m_ptEnd.x = x ;
m_ptEnd.y = y ;
}
}

void CCircle::rotateNi()
{
if ( m_drawType == 4 )
{
CPoint center( getCenter() ) ;
int x  y ;
x = static_cast(( m_ptOrigin.x - center.x ) * cos(pi/2) - ( m_ptOrigin.y - center.y ) * sin(pi/2)) + center.x ;
y = static_cast(( m_ptOrigin.x - center.x ) * sin(pi/2) + ( m_ptOrigin.y - center.y ) * cos(pi/2)) + center.y ;
m_ptOrigin.x = x ;
m_ptOrigin.y = y ;
x = static_cast(( m_ptEnd.x - center.x ) * cos(pi/2) - ( m_ptEnd.y - center.y ) * sin(pi/2)) + center.x ;
y = static_cast(( m_ptEnd.x - center.x ) * sin(pi/2) + ( m_ptEnd.y - center.y ) * cos(pi/2)) + center.y ;
m_ptEnd.x = x ;
m_ptEnd.y = y ;
}
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2937  2012-07-20 08:44  GraphicCircle.cpp

     文件        687  2012-07-20 06:36  GraphicCircle.h

     文件      12432  2012-07-20 08:44  GraphicDebugCircle.obj

     文件       7801  2012-07-20 08:44  GraphicDebugCircle.sbr

     文件       9747  2012-07-20 06:44  GraphicDebugDot.obj

     文件          0  2012-07-20 06:44  GraphicDebugDot.sbr

     文件       7906  2012-07-20 06:44  GraphicDebugGraph.obj

     文件          0  2012-07-20 06:44  GraphicDebugGraph.sbr

     文件    3752960  2012-07-20 07:27  GraphicDebugGraphic.bsc

     文件     159811  2012-07-20 08:51  GraphicDebugGraphic.exe

     文件     404252  2012-07-20 08:51  GraphicDebugGraphic.ilk

     文件      23365  2012-07-20 06:36  GraphicDebugGraphic.obj

     文件    6935956  2012-07-18 23:25  GraphicDebugGraphic.pch

     文件     558080  2012-07-20 08:51  GraphicDebugGraphic.pdb

     文件       9868  2012-07-20 08:51  GraphicDebugGraphic.res

     文件          0  2012-07-20 06:36  GraphicDebugGraphic.sbr

     文件      14818  2012-07-18 23:25  GraphicDebugGraphicDoc.obj

     文件          0  2012-07-18 23:25  GraphicDebugGraphicDoc.sbr

     文件      63419  2012-07-20 08:51  GraphicDebugGraphicView.obj

     文件      18027  2012-07-20 08:51  GraphicDebugGraphicView.sbr

     文件      11383  2012-07-20 07:01  GraphicDebugLine.obj

     文件          0  2012-07-20 07:01  GraphicDebugLine.sbr

     文件      19969  2012-07-18 23:25  GraphicDebugMainFrm.obj

     文件          0  2012-07-18 23:25  GraphicDebugMainFrm.sbr

     文件      19996  2012-07-20 08:12  GraphicDebugRectangle.obj

     文件       9530  2012-07-20 08:12  GraphicDebugRectangle.sbr

     文件     105680  2012-07-18 23:25  GraphicDebugStdAfx.obj

     文件    1376312  2012-07-18 23:25  GraphicDebugStdAfx.sbr

     文件      19470  2012-07-20 07:14  GraphicDebugThreeAngle.obj

     文件          0  2012-07-20 07:14  GraphicDebugThreeAngle.sbr

............此处省略63个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)