int CMcdCtrl::Mcd(int a, int b) { if(b==0){ return a; } return Mcd(b,a%b); }
void CMcdCtrl::OnDraw( CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid) { // TODO: Replace the following code with your own drawing code. /* pdc->FillRect(rcBounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH))); pdc->Ellipse(rcBounds); */ //设置控件的背景颜色 CBrush brush(RGB(255,255,0)); pdc->FillRect(&rcBounds,&brush); //设置圆的背景色黑色 CBrush brush2(RGB(0,200,0)); CBrush* pOldBursh=pdc->SelectObject(&brush2); //设置圆心位置 POINT p1 = {30,120}; POINT p2 = {200,p1.y}; POINT p3 = { (p1.x+p2.x)/2 , m_direction?(p1.y+60):p1.y-60 }; // 开始画圆 pdc->Ellipse(p1.x-15,p1.y-15,p1.x+15,p1.y+15); pdc->Ellipse(p2.x-15,p2.y-15,p2.x+15,p2.y+15); pdc->Ellipse(p3.x-15,p3.y-15,p3.x+15,p3.y+15); //划线 pdc->MoveTo(p1); pdc->LineTo(p3); pdc->LineTo(p2); //写入数字 pdc->SetBkMode(TRANSPARENT); pdc->SetTextAlign(TA_CENTER); pdc->SetTextColor(RGB(255,255,255)); CString strInfo; strInfo.Format("%d",m_a); pdc->TextOut(p1.x,p1.y-10,strInfo); strInfo.Format("%d",m_b); pdc->TextOut(p2.x,p2.y-10,strInfo); strInfo.Format("%d",Mcd(m_a,m_b)); pdc->TextOut(p3.x,p3.y-10,strInfo); }
void CMcdCtrl::OnDraw( CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid) { //1 设置控件的背景色 CBrush brush(RGB(255,255,0)); pdc->FillRect(&rcBounds,&brush); //2 设置圆的背景色 CBrush brush2(RGB(0,0,0)); CBrush *pOldBrush=pdc->SelectObject(&brush2); //3 设置圆心位置 POINT p1={30,120}; POINT p2={190,p1.y}; POINT p3={(p1.x+p2.x)/2, m_direction?p1.y-60:p1.y+60}; int r=15;//半径 //4 画圆 pdc->Ellipse(p1.x-r,p1.y-r,p1.x+r,p1.y+r); pdc->Ellipse(p2.x-r,p2.y-r,p2.x+r,p2.y+r); pdc->Ellipse(p3.x-r,p3.y-r,p3.x+r,p3.y+r); //5 画圆的连接线 pdc->MoveTo(p1); pdc->LineTo(p3); pdc->LineTo(p2); //6 设置文本的对齐方式,颜色和背景颜色 pdc->SetTextAlign(TA_CENTER); pdc->SetTextColor(RGB(255,255,255)); pdc->SetBkMode(TRANSPARENT); //7 输出数值 CString strInfo; strInfo.Format("%d",m_a); pdc->TextOut(p1.x,p1.y-9,strInfo); strInfo.Format("%d",m_b); pdc->TextOut(p2.x,p2.y-9,strInfo); strInfo.Format("%d",Mcd(m_a,m_b)); pdc->TextOut(p3.x,p3.y-9,strInfo); }