MirrorCircle.cpp
上传用户:hehe2haha
上传日期:2013-08-16
资源大小:161k
文件大小:1k
源码类别:

CAD

开发平台:

Visual C++

  1. // MirrorCircle.cpp: implementation of the CMirrorCircle class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "MirrorCircle.h"
  6. //////////////////////////////////////////////////////////////////////
  7. // Construction/Destruction
  8. //////////////////////////////////////////////////////////////////////
  9. CMirrorCircle::CMirrorCircle()
  10. {
  11. }
  12. CMirrorCircle::CMirrorCircle(CShape *Shape)
  13. {
  14. if (Shape != NULL)
  15. {
  16. SourceBeginPos = Shape->m_ptFirstPos;
  17. SourceEndPos   = Shape->m_ptSecondPos;
  18. nRadius        = CDraw::Distance(SourceBeginPos,SourceEndPos);
  19. }
  20. }
  21. CMirrorCircle::~CMirrorCircle()
  22. {
  23. }
  24. void CMirrorCircle::Mirror(HDC hdc,POINT BeginPos,POINT PrePos, POINT EndPos)
  25. {
  26. int nOldMode = ::SetROP2(hdc,R2_XORPEN);
  27. HPEN hPen    = ::CreatePen( m_PenStyle,
  28.         m_PenWidth,
  29. m_PenColor^ GetBkColor(hdc) );
  30. HPEN hOldPen = (HPEN)::SelectObject(hdc,hPen);
  31. //不进行填充
  32. ::SelectObject(hdc,GetStockObject(NULL_BRUSH));
  33. SetSinCos(BeginPos,PrePos);
  34. SetMirrorPos(BeginPos,PrePos);
  35. //擦去前一次线段
  36. CDraw::DrawCircle(hdc,MirrorBeginPos,nRadius);
  37. SetSinCos(BeginPos,EndPos);
  38. SetMirrorPos(BeginPos,EndPos);
  39. //画出这一次线段
  40. CDraw::DrawCircle(hdc,MirrorBeginPos,nRadius);
  41. ::SetROP2(hdc,nOldMode);
  42. ::SelectObject(hdc,hOldPen);
  43. ::DeleteObject(hPen);
  44. }