Trigon.cpp
上传用户:ckg1000
上传日期:2013-01-26
资源大小:630k
文件大小:15k
源码类别:

CAD

开发平台:

Visual C++

  1. // Trigon.cpp: implementation of the CTrigon class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "CAD2006.h"
  6. #include "Trigon.h"
  7. #include "math.h"
  8. #ifdef _DEBUG
  9. #undef THIS_FILE
  10. static char THIS_FILE[]=__FILE__;
  11. #define new DEBUG_NEW
  12. #endif
  13. static bool blntrigon = false;
  14. static bool killround = false;
  15. //////////////////////////////////////////////////////////////////////
  16. //       三角形类,       陆立新          版本:2005-12-20
  17. //////////////////////////////////////////////////////////////////////
  18. CTrigon::CTrigon()
  19. {
  20. this->m_status = NoClicked;
  21. }
  22. CTrigon::~CTrigon()
  23. {
  24. }
  25. void CTrigon::Draw(CDC *pDC)         
  26. {
  27. HPEN newPen = ::CreatePen(m_borderStyle,
  28. m_borderWidth,m_borderColor^pDC->GetBkColor());
  29. pDC->SelectObject(newPen);
  30. int oldR2 = pDC->SetROP2(R2_XORPEN);
  31. if( m_status == FirstClicked)
  32. {
  33. pDC->MoveTo(m_firstPt.x, m_firstPt.y);
  34. pDC->LineTo(m_oldPt.x, m_oldPt.y);
  35. pDC->MoveTo(m_firstPt.x, m_firstPt.y);
  36. pDC->LineTo(m_secondPt.x, m_secondPt.y);
  37. }
  38. if( m_status == SecondClicked)
  39. {
  40. pDC->MoveTo( m_firstPt.x, m_firstPt.y);
  41. pDC->LineTo(m_oldPt.x, m_oldPt.y);
  42. pDC->MoveTo( m_secondPt.x, m_secondPt.y);
  43. pDC->LineTo(m_oldPt.x, m_oldPt.y);
  44. pDC->MoveTo( m_firstPt.x, m_firstPt.y);
  45. pDC->LineTo(m_thirdPt.x, m_thirdPt.y);
  46. pDC->MoveTo( m_secondPt.x, m_secondPt.y);
  47. pDC->LineTo(m_thirdPt.x, m_thirdPt.y);
  48. }
  49. pDC->SetROP2(oldR2);
  50. ::DeleteObject(newPen);
  51. if (KILLRECT == true)
  52. {
  53. HDC hdc = pDC->GetSafeHdc();
  54. ::SelectObject(hdc,GetStockObject(WHITE_BRUSH));
  55. DrawRound(pDC);
  56. KILLRECT = false;
  57. }
  58. }
  59. void CTrigon::DrawOnSedPtDown(CDC *pDC)  
  60. {
  61. HPEN newPen = ::CreatePen(m_borderStyle,
  62. m_borderWidth,m_borderColor^pDC->GetBkColor());
  63. pDC->SelectObject(newPen);
  64. int oldR2 = pDC->SetROP2(R2_XORPEN);
  65. pDC->MoveTo(m_firstPt.x, m_firstPt.y);
  66. pDC->LineTo(m_secondPt.x, m_secondPt.y);
  67. pDC->SetROP2(oldR2);
  68. DeleteObject(newPen);
  69. }
  70. void CTrigon::OnLbuttondown(CDC *pDC,CPoint point)  //左键点击
  71. {
  72. POINT curPoint;   //左键点击的点
  73. curPoint.x = point.x;
  74. curPoint.y = point.y;
  75. switch(m_status)
  76. {
  77. case NoClicked:
  78. {
  79. m_firstPt = m_oldPt = point;
  80. m_status = FirstClicked;
  81. }
  82. break;
  83. case FirstClicked:
  84. {
  85. m_secondPt = m_oldPt = point;
  86. m_status = SecondClicked;
  87. DrawOnSedPtDown(pDC);   //先画好第一条边再说
  88. }
  89. break;
  90. case SecondClicked:
  91. {
  92. m_thirdPt = point;
  93. m_status = NoClicked;
  94. }
  95. break;
  96. }
  97. }
  98. //鼠标移动
  99. void CTrigon::Onmousemove(CDC *pDC,CPoint point)  
  100. {
  101. POINT curPoint;
  102. curPoint.x = point.x;
  103. curPoint.y = point.y;
  104. if( m_status == FirstClicked )
  105. {
  106. m_secondPt = point;
  107. Draw(pDC);
  108. m_oldPt = point;
  109. }
  110. if( m_status == SecondClicked )
  111. {
  112. m_thirdPt = point;
  113. Draw(pDC);
  114. m_oldPt = point;
  115. }
  116. }
  117. //求两点之间的距离
  118. int CTrigon::Distance(POINT Pt1, POINT Pt2)  
  119. {
  120. int nDist;
  121. nDist =(int)(sqrt((Pt1.x - Pt2.x)*(Pt1.x - Pt2.x) + (Pt1.y - Pt2.y)*(Pt1.y - Pt2.y)));
  122. return nDist;
  123. }
  124. //判断一个点是否在三角形上
  125. bool CTrigon::IsOnTrigon(POINT curPt)   
  126. {
  127. bool yesno= false;
  128. int Dist1_2 = Distance(m_firstPt, m_secondPt);
  129. int Dist1_3 = Distance(m_firstPt, m_thirdPt);
  130. int Dist2_3 = Distance(m_secondPt, m_thirdPt);
  131. int DistPt_1 = Distance(curPt, m_firstPt);
  132. int DistPt_2 = Distance(curPt, m_secondPt);
  133. int DistPt_3 = Distance(curPt, m_thirdPt);
  134. if((DistPt_1 + DistPt_2 <= Dist1_2+1)||(DistPt_1 + DistPt_3 <= Dist1_3+1)||(DistPt_2 + DistPt_3 <= Dist2_3+1))
  135. {
  136. yesno= true;
  137. }
  138. return yesno;
  139. }
  140. //画小圆圈(默认红色)
  141. void CTrigon::DrawRound(CDC *pDC,COLORREF colorRound )
  142. {
  143. POINT centPt;  //三角形重心
  144. centPt.x = (m_firstPt.x + m_secondPt.x + m_thirdPt.x)/3;
  145. centPt.y = (m_firstPt.y + m_secondPt.y + m_thirdPt.y)/3;
  146. POINT FitsgPt = CaleSignPt(centPt, m_firstPt);
  147. POINT SedsgPt = CaleSignPt(centPt, m_secondPt);
  148. POINT ThdsgPt = CaleSignPt(centPt, m_thirdPt);
  149. POINT FirstPtL;
  150. FirstPtL.x = FitsgPt.x-4, FirstPtL.y = FitsgPt.y-4;
  151. POINT FirstPtR;
  152. FirstPtR.x = FitsgPt.x+4, FirstPtR.y = FitsgPt.y+4;
  153. POINT SecondPtL;
  154. SecondPtL.x = SedsgPt.x-4, SecondPtL.y = SedsgPt.y-4;
  155. POINT SecondPtR;
  156. SecondPtR.x = SedsgPt.x+4, SecondPtR.y = SedsgPt.y+4;
  157. POINT ThirdPtL;
  158. ThirdPtL.x = ThdsgPt.x-4, ThirdPtL.y = ThdsgPt.y-4;
  159. POINT ThirdPtR;
  160. ThirdPtR.x = ThdsgPt.x+4, ThirdPtR.y = ThdsgPt.y+4;
  161. /* int i = pDC->SetROP2(R2_XORPEN);
  162. HPEN hpen = ::CreatePen(0,0,colorRound^pDC->GetBkColor());
  163. HPEN holdpen =(HPEN)pDC->SelectObject(hpen);
  164. pDC->SelectObject(GetStockObject(NULL_BRUSH));
  165. */
  166. HDC hdc = pDC->GetSafeHdc();
  167. HPEN newPen = ::CreatePen(0,0, colorRound);
  168. HBRUSH newBrush = ::CreateSolidBrush(colorRound);
  169. SelectObject(hdc,newPen);
  170. SelectObject(hdc,newBrush);
  171. Ellipse(hdc,FirstPtL.x,FirstPtL.y,FirstPtR.x,FirstPtR.y);  
  172. Ellipse(hdc,SecondPtL.x,SecondPtL.y,SecondPtR.x,SecondPtR.y);
  173. Ellipse(hdc,ThirdPtL.x,ThirdPtL.y,ThirdPtR.x,ThirdPtR.y);
  174. // pDC->SetROP2(i);
  175. DeleteObject(newPen);
  176. DeleteObject(newBrush);
  177. }
  178. //选定
  179. bool CTrigon::Select(CDC *pDC,CPoint point)  
  180. {
  181. KILLRECT = true;
  182. bool yesno = false;
  183. POINT curPt;
  184. curPt.x = point.x ;
  185. curPt.y = point.y ;
  186. if(IsOnTrigon(curPt) == true)
  187. {
  188. DrawRound(pDC);
  189. m_oldPt  = curPt;
  190. yesno = true;
  191. }
  192. return yesno;
  193. }
  194. //选定一个顶点
  195. bool CTrigon::SelectOnePt(CDC *pDC,CPoint point)  
  196. {
  197. KILLRECT = true;
  198. bool yesno = false;
  199. POINT curPt;
  200. curPt.x = point.x ;
  201. curPt.y = point.y ;
  202. if ( (curPt.x == m_firstPt.x && curPt.y == m_firstPt.y)     
  203. ||(curPt.x == m_secondPt.x && curPt.y == m_secondPt.y)
  204. ||(curPt.x == m_thirdPt.x && curPt.y == m_thirdPt.y) )
  205. {
  206. DrawRound(pDC);
  207. m_oldPt  = curPt;
  208. yesno = true;
  209. }
  210. return yesno;
  211. }
  212.  //三角形移动时的画方法
  213. void CTrigon::DrawMove(CDC *pDC,POINT FirstPt, POINT SecondPt, POINT ThirdPt,
  214. POINT FirstOldPt, POINT SecondOldPt, POINT ThirdOldPt)   
  215. {
  216. HPEN newPen = ::CreatePen(m_borderStyle,
  217. m_borderWidth,m_borderColor^pDC->GetBkColor());
  218. pDC->SelectObject(newPen);
  219. int oldR2 = pDC->SetROP2(R2_XORPEN);
  220. pDC->MoveTo( FirstOldPt.x, FirstOldPt.y);
  221. pDC->LineTo(SecondOldPt.x, SecondOldPt.y);
  222. pDC->MoveTo(FirstOldPt.x, FirstOldPt.y);
  223. pDC->LineTo(ThirdOldPt.x, ThirdOldPt.y);
  224. pDC->MoveTo(SecondOldPt.x, SecondOldPt.y);
  225. pDC->LineTo(ThirdOldPt.x, ThirdOldPt.y);
  226.         ////////
  227. pDC->MoveTo(FirstPt.x, FirstPt.y);
  228. pDC->LineTo(SecondPt.x, SecondPt.y);
  229. pDC->MoveTo(FirstPt.x, FirstPt.y);
  230. pDC->LineTo(ThirdPt.x, ThirdPt.y);
  231. pDC->MoveTo(SecondPt.x, SecondPt.y);
  232. pDC->LineTo(ThirdPt.x, ThirdPt.y);
  233. pDC->SetROP2(oldR2);
  234. ::DeleteObject(newPen);
  235. }
  236. //图形移动
  237. void CTrigon::Move(CDC *pDC,CPoint point)  
  238. {
  239. static bool bln = false;
  240. POINT curPoint;
  241. curPoint.x = point.x;
  242. curPoint.y = point.y;
  243. POINT FirstOldPt = m_firstPt;      //存老点
  244. POINT SecondOldPt = m_secondPt;
  245. POINT ThirdOldPt = m_thirdPt;
  246. m_firstPt.x = FirstOldPt.x + curPoint.x - m_oldPt.x;   //重新计算每点坐标
  247. m_firstPt.y = FirstOldPt.y + curPoint.y - m_oldPt.y;
  248. m_secondPt.x = SecondOldPt.x + curPoint.x - m_oldPt.x;
  249. m_secondPt.y = SecondOldPt.y + curPoint.y - m_oldPt.y;
  250. m_thirdPt.x = ThirdOldPt.x + curPoint.x - m_oldPt.x;
  251. m_thirdPt.y = ThirdOldPt.y + curPoint.y - m_oldPt.y;
  252.     
  253. DrawMove(pDC,m_firstPt,m_secondPt,m_thirdPt,FirstOldPt, SecondOldPt,ThirdOldPt); 
  254.     
  255. m_oldPt = curPoint;
  256. }
  257. //求一点关于直线对称的点
  258. POINT CTrigon::GetMirPt(const POINT& ptBegin, const POINT& ptEnd,POINT ptCur)
  259. {
  260. POINT ptNew;
  261. double length = Distance(ptBegin,ptEnd);
  262. if(length == 0)
  263. return ptNew=ptCur;
  264. double t1 = 2. * ((ptEnd.x-ptBegin.x)/length) * ((ptEnd.y-ptBegin.y)/length);
  265. double t2 = ((ptEnd.x-ptBegin.x)/length) * ((ptEnd.x-ptBegin.x)/length)
  266. - ((ptEnd.y-ptBegin.y)/length) * ((ptEnd.y-ptBegin.y)/length);
  267. ptNew.x =(int)(ptCur.x*t2 + ptCur.y*t1 + ptBegin.x*(-t2) - ptBegin.y*t1 + ptBegin.x);
  268. ptNew.y =(int)(ptCur.x*t1 + ptCur.y*(-t2) + ptBegin.y*t2 - ptBegin.x*t1 + ptBegin.y);
  269. return ptNew;
  270. }
  271. void CTrigon::OnMirLBtnDn(CDC *pDC,CPoint point)  
  272. {
  273. POINT curPoint;   //左键点击的点
  274. curPoint.x = point.x ;
  275. curPoint.y = point.y ;
  276. m_MirBegPt = m_MirEndPt = m_oldPt = curPoint;
  277. }
  278. //画镜像直线
  279. void CTrigon::DrawMirLine(CDC *pDC,POINT MirBegPt, POINT MirEndPt)
  280. {
  281. HPEN newPen = CreatePen(0,0,RGB(255,0,0)^pDC->GetBkColor());
  282. HPEN oldPen = (HPEN)pDC->SelectObject(newPen);
  283. int oldR2 = pDC->SetROP2(R2_XORPEN);
  284. pDC->MoveTo(MirBegPt.x,MirBegPt.y);
  285. pDC->LineTo(m_oldPt.x,m_oldPt.y);
  286. pDC->MoveTo(MirBegPt.x,MirBegPt.y);
  287. pDC->LineTo(MirEndPt.x,MirEndPt.y);
  288. pDC->SetROP2(oldR2);
  289. pDC->SelectObject(oldPen);
  290. ::DeleteObject(newPen);
  291. ::DeleteObject(oldPen);
  292. }
  293. //销毁镜像直线
  294. void CTrigon::KillMirLine(CDC *pDC)
  295. {
  296. HPEN newPen = CreatePen(0,0,pDC->GetBkColor());  
  297. HPEN oldPen = (HPEN)pDC->SelectObject(newPen);
  298. pDC->MoveTo(m_MirBegPt.x,m_MirBegPt.y);
  299. pDC->LineTo(m_MirEndPt.x,m_MirEndPt.y);
  300. pDC->SelectObject(oldPen);
  301. DeleteObject(newPen);
  302. ::DeleteObject(oldPen);
  303. }
  304. //镜像方法(以线为参照)
  305. void CTrigon::Mirror(CDC *pDC,CPoint point) 
  306. POINT curPt;
  307. curPt = point;
  308. m_oldPt = m_MirEndPt;
  309. m_MirEndPt = curPt;
  310. POINT FirstMirOldPt = m_FirstMirPt;   //镜像后的老点
  311. POINT SecondMirOldPt = m_SecondMirPt;
  312. POINT ThirdMirOldPt = m_ThirdMirPt;
  313. m_FirstMirPt = GetMirPt(m_MirBegPt, m_MirEndPt, m_firstPt);
  314. m_SecondMirPt = GetMirPt(m_MirBegPt, m_MirEndPt, m_secondPt);
  315. m_ThirdMirPt = GetMirPt(m_MirBegPt, m_MirEndPt, m_thirdPt);
  316. DrawMirLine(pDC,m_MirBegPt,m_MirEndPt);  //镜像线
  317. DrawMove(pDC,m_FirstMirPt, m_SecondMirPt, m_ThirdMirPt,
  318.  FirstMirOldPt, SecondMirOldPt, ThirdMirOldPt); 
  319. m_oldPt = curPt;
  320. this->blntemp = false;
  321. killround = true;
  322. }
  323. //更新图形
  324. void CTrigon::Update(CDC *pDC)  
  325. {
  326. HDC hdc = pDC->GetSafeHdc();
  327. DrawRound(pDC,GetBkColor(hdc));  //先擦掉小圆圈
  328. KillMirLine(pDC);   //擦掉镜像直线
  329. if( killround )
  330. {
  331. KillRound(pDC);
  332. killround = false;
  333. }
  334. }
  335. //缩放
  336. void CTrigon::Zoom(CDC *pDC,CPoint point)   //固定两点,缩放另一点   
  337. {
  338. POINT curPoint;
  339. curPoint.x = point.x ;
  340. curPoint.y = point.y ;
  341. POINT FirstOldPt = m_firstPt;      //存老点
  342. POINT SecondOldPt = m_secondPt;
  343. POINT ThirdOldPt = m_thirdPt;
  344. if(FirstOldPt.x == m_oldPt.x && FirstOldPt.y == m_oldPt.y)
  345. {
  346. m_firstPt = curPoint;
  347. }
  348. if(SecondOldPt.x == m_oldPt.x && SecondOldPt.y == m_oldPt.y)
  349. {
  350. m_secondPt = curPoint;
  351. }
  352. if(ThirdOldPt.x == m_oldPt.x && ThirdOldPt.y == m_oldPt.y)
  353. {
  354. m_thirdPt = curPoint;
  355. }
  356. DrawMove(pDC,m_firstPt,m_secondPt,m_thirdPt,FirstOldPt, SecondOldPt,ThirdOldPt); 
  357.     
  358. m_oldPt = curPoint;  
  359. }
  360. CPoint CTrigon::GetPosBegin()  
  361. {
  362. if( blntemp )
  363. {
  364. return m_firstPt;
  365. }
  366. else
  367. {
  368. return m_FirstMirPt;
  369. }
  370. }
  371. CPoint CTrigon::GetPosCenter()
  372. {
  373. if( blntemp )
  374. {
  375. return m_secondPt;
  376. }
  377. else
  378. {
  379. return m_SecondMirPt;
  380. }
  381. }
  382. CPoint CTrigon::GetPosEnd()
  383. {
  384. if( blntemp )
  385. {
  386. return m_thirdPt;
  387. }
  388. else
  389. {
  390. blntemp = true;
  391. return m_ThirdMirPt;
  392. }
  393. }
  394. void CTrigon::SetPosBegin(CPoint point)  //传起点
  395. {
  396. m_firstPt = point;
  397. }
  398. void CTrigon::SetPosCenter(CPoint point)
  399. {
  400. m_secondPt = point;
  401. }
  402. void CTrigon::SetPosEnd(CPoint point)
  403. {
  404. m_thirdPt = point;
  405. }
  406. //旋转
  407. void CTrigon::Rotate(CDC *pDC,CPoint point)            //围绕第一个点转
  408. {
  409. Update(pDC);
  410. double Pi = 3.14159;
  411. double radian = Pi * m_angle/180;   //化成弧度
  412. POINT secondOldPt = m_secondPt;
  413. POINT thirdOldPt = m_thirdPt;
  414. m_secondPt = CalRotatePt(m_firstPt, secondOldPt, radian);
  415. m_thirdPt = CalRotatePt(m_firstPt, thirdOldPt, radian);
  416. DrawMove(pDC,m_firstPt,m_secondPt,m_thirdPt,m_firstPt, secondOldPt,thirdOldPt); 
  417. }
  418. // 功    能: 计算点绕指定点旋转dbAngle个角度后的点
  419. // 输入参数: 定点:POINT ptCenter 待求点:POINT ptPos
  420. //           弧度 double dbAngle 
  421. // 返 回 值: 旋转到的位置 POINT ptDest;
  422. POINT CTrigon::CalRotatePt(POINT ptCenter,POINT ptPos,double dbAngle)
  423. {
  424. struct tagMatrix             //旋转矩阵
  425. {
  426. double r11, r12, r13;
  427. double r21, r22, r23;
  428. double r31, r32, r33;
  429. }matrix;
  430. matrix.r11 = (double)cos(dbAngle);
  431. matrix.r21 = (double)sin(dbAngle);
  432. matrix.r31 = 0.0;
  433. matrix.r12 = (double)(-sin(dbAngle));
  434. matrix.r22 = (double)cos(dbAngle);
  435. matrix.r32 = 0.0;
  436. matrix.r13 = (double)((1 - cos(dbAngle)) * ptCenter.x + ptCenter.y * sin(dbAngle));
  437. matrix.r23 = (double)((1 - cos(dbAngle)) * ptCenter.y - ptCenter.x * sin(dbAngle));
  438. matrix.r33 = 1.0;
  439. POINT ptDest;
  440. ptDest.x = (int)(matrix.r11 * ptPos.x + matrix.r12 * ptPos.y + matrix.r13);
  441. ptDest.y = (int)(matrix.r21 * ptPos.x + matrix.r22 * ptPos.y + matrix.r23);
  442. return ptDest;
  443. }
  444. void CTrigon::Delete(CDC *pDC)
  445. {
  446. Update(pDC);
  447. HDC hdc = pDC->GetSafeHdc();
  448. HPEN newPen = ::CreatePen(m_borderStyle,m_borderWidth, GetBkColor(hdc));
  449. ::SelectObject(hdc,newPen);
  450. ::MoveToEx(hdc, m_firstPt.x, m_firstPt.y, NULL);
  451. ::LineTo(hdc,m_secondPt.x, m_secondPt.y);
  452. ::MoveToEx(hdc, m_firstPt.x, m_firstPt.y, NULL);
  453. ::LineTo(hdc,m_thirdPt.x, m_thirdPt.y);
  454. ::MoveToEx(hdc, m_secondPt.x, m_secondPt.y, NULL);
  455. ::LineTo(hdc,m_thirdPt.x, m_thirdPt.y);
  456. ::DeleteObject(newPen);
  457. }
  458. void CTrigon::SetAngle(int angle)
  459. {
  460. m_angle = angle;
  461. }
  462. //计算一条线末端外的标记点
  463. POINT CTrigon::CaleSignPt(POINT centPt, POINT orderPt)
  464. {
  465. int dLen = 6;     //标记点与末端点的距离
  466. POINT signPt;
  467. int r = Distance(centPt, orderPt);
  468. int xLen = abs(centPt.x - orderPt.x);
  469. int yLen = abs(centPt.y - orderPt.y);
  470. int xAdd =  dLen * xLen/r;
  471. int yAdd =  dLen * yLen/r;
  472. if(centPt.x <= orderPt.x && centPt.y >= orderPt.y)  //第一象限
  473. {
  474. signPt.x = orderPt.x + xAdd;
  475. signPt.y = orderPt.y - yAdd;
  476. }
  477. if(centPt.x <= orderPt.x && centPt.y <= orderPt.y) //第二象限
  478. {
  479. signPt.x = orderPt.x + xAdd;
  480. signPt.y = orderPt.y + yAdd;
  481. }
  482. if(centPt.x >= orderPt.x && centPt.y <= orderPt.y) //第三象限
  483. {
  484. signPt.x = orderPt.x - xAdd;
  485. signPt.y = orderPt.y + yAdd;
  486. }
  487. if(centPt.x >= orderPt.x && centPt.y >= orderPt.y) //第四象限
  488. {
  489. signPt.x = orderPt.x - xAdd;
  490. signPt.y = orderPt.y - yAdd;
  491. }
  492. return signPt;
  493. }
  494. void CTrigon::KillRound(CDC *pDC)
  495. {
  496. POINT centPt;  //三角形重心
  497. centPt.x = (m_firstPt.x + m_secondPt.x + m_thirdPt.x)/3;
  498. centPt.y = (m_firstPt.y + m_secondPt.y + m_thirdPt.y)/3;
  499. POINT FitsgPt = CaleSignPt(centPt, m_firstPt);
  500. POINT SedsgPt = CaleSignPt(centPt, m_secondPt);
  501. POINT ThdsgPt = CaleSignPt(centPt, m_thirdPt);
  502. POINT FirstPtL;
  503. FirstPtL.x = FitsgPt.x-4, FirstPtL.y = FitsgPt.y-4;
  504. POINT FirstPtR;
  505. FirstPtR.x = FitsgPt.x+4, FirstPtR.y = FitsgPt.y+4;
  506. POINT SecondPtL;
  507. SecondPtL.x = SedsgPt.x-4, SecondPtL.y = SedsgPt.y-4;
  508. POINT SecondPtR;
  509. SecondPtR.x = SedsgPt.x+4, SecondPtR.y = SedsgPt.y+4;
  510. POINT ThirdPtL;
  511. ThirdPtL.x = ThdsgPt.x-4, ThirdPtL.y = ThdsgPt.y-4;
  512. POINT ThirdPtR;
  513. ThirdPtR.x = ThdsgPt.x+4, ThirdPtR.y = ThdsgPt.y+4;
  514. HDC hdc = pDC->GetSafeHdc();
  515. HPEN newPen = ::CreatePen(0,0, RGB(255,255,255));
  516. // HBRUSH newBrush = ::CreateSolidBrush(colorRound);
  517. SelectObject(hdc,newPen);
  518. // SelectObject(hdc,newBrush);
  519. Ellipse(hdc,FirstPtL.x,FirstPtL.y,FirstPtR.x,FirstPtR.y);  
  520. Ellipse(hdc,SecondPtL.x,SecondPtL.y,SecondPtR.x,SecondPtR.y);
  521. Ellipse(hdc,ThirdPtL.x,ThirdPtL.y,ThirdPtR.x,ThirdPtR.y);
  522. // DeleteObject(newBrush);
  523. }