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

CAD

开发平台:

Visual C++

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