设为首页 加入收藏

TOP

使用VC开发程序经验谈(二 续)(一)
2014-11-23 21:25:15 】 浏览:936
Tags:使用 开发 程序 经验谈

//下面是上面三个类的实现,注意list的用法

//////////////////////////////////////////////////////////////////////

// CMyArc Class

//////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////

// Construction/Destruction

//////////////////////////////////////////////////////////////////////

CMyArc::CMyArc(MYXYZ i_pc, MYXYZ i_ps, MYXYZ i_pe)

{

m_pc=i_pc;

m_ps=i_ps;

m_pe=i_pe;

}

int CMyArc::Draw(long lDevice)

{

double dR=sqrt((m_ps.x-m_pc.x)*(m_ps.x-m_pc.x)+(m_ps.y-m_pc.y)*(m_ps.y-m_pc.y)+(m_ps.z-m_pc.z)*(m_ps.z-m_pc.z));

::Arc((HDC)lDevice,m_pc.x-dR,m_pc.y-dR,m_pc.x+dR,m_pc.y+dR,m_ps.x,m_ps.y,m_pe.x,m_pe.y);

return 0;

}

//////////////////////////////////////////////////////////////////////

// CMyPolyLn Class

//////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////

// Construction/Destruction

//////////////////////////////////////////////////////////////////////

CMyPolyLn::~CMyPolyLn()

{

MYPOLYLN::iterator iter;

for(iter=m_PolyLn.begin();iter!=m_PolyLn.end();iter++)

{

delete (*iter);

}

m_PolyLn.clear();

}

int CMyPolyLn::AddPoint(MYXYZ *pxyz)

{

MYXYZ *p=new MYXYZ;

*p=*pxyz;

m_PolyLn.insert(m_PolyLn.end(),p);

return 0;

}

int CMyPolyLn::Draw(long lDevice)

{

HDC hdc=(HDC)lDevice;

MYPOLYLN::iterator iter=m_PolyLn.begin();

//该处为了图形的显示更明显,扩大了线的比例,更改了线的位置,正常情况下应该使用注释中的语句

MoveToEx(hdc,(*iter)->x*100+100,-(*iter)->y*100+200,NULL);

//MoveToEx(hdc,(*iter)->x,(*iter)->y,NULL);

for(iter=m_PolyLn.begin();iter!=m_PolyLn.end();iter++)

{

//该处为了图形的显示更明显,扩大了线的比例,更改了线的位置,正常情况下应该使用注释中的语句

LineTo(hdc,(*iter)->x*100+100,-(*iter)->y*100+200);

// LineTo(hdc,(*iter)->x,(*iter)->y);

}

return 0;

}

//////////////////////////////////////////////////////////////////////

// CShape Class

//////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////

// Construction/Destruction

//////////////////////////////////////////////////////////////////////

CShape::~CShape()

{

list::iterator iter;

for(iter=m_List.begin();iter!=m_List.end();iter++)

{

delete (*iter);

}

m_List.clear();

}

int CShape::Draw(long lDevice)

{

list::iterator iter;

for(iter=m_List.begin();iter!=m_List.end();iter++)

{

(*iter)->Draw(lDevice);

}

return 0;

}

至此,几何元素对象类实现完成,可以在主程序中进行测试:

void CShapeView::OnDraw(CDC* pDC)

{

CShapeDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

{

CShape Shape;

CMyArc *pArc=new CMyArc(CMyXYZ(100,100,0),CMyXYZ(100,20,0),CMyXYZ(180,100,0));

Shape.m_List.insert(Shape.m_List.end(),pArc);

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇使用VC开发程序经验谈(二) 下一篇关于VC操作Office屏蔽掉“服务器..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目