hello-youth 2017-03-25 08:45 采纳率: 0%
浏览 2309

mfc中点画圆算法 画不出来

void CEView:: MidpointCircle (CDC pDC, int radius, CPoint cenp, COLORREF crColor)
{
int x=0;
int y=radius;
int d=1-radius;
CirclePoints(pDC,x,y,cenp,crColor);
while(y>=x)
{ if(d<0)
d+=2*x+3;
else{
d+=2
(x-y)+5;
y--;
}
x++;
CirclePoints(pDC,x,y,cenp,crColor);
}
}
void CEView::CirclePoints(CDC pDC, int x, int y, CPoint cenp, COLORREF br)
{
pDC->SetPixel(x+cenp.x,y+cenp.y,br);
pDC->SetPixel(y+cenp.x,x+cenp.y,br);
pDC->SetPixel(y+cenp.x,-x+cenp.y,br);
pDC->SetPixel(x+cenp.x,-y+cenp.y,br);
pDC->SetPixel(-x+cenp.x,-y+cenp.y,br);
pDC->SetPixel(-y+cenp.x,-x+cenp.y,br);
pDC->SetPixel(-y+cenp.x,x+cenp.y,br);
pDC->SetPixel(-x+cenp.x,y+cenp.y,br);
}
void CEView::Onyuan()
{
// TODO: Add your command handler code here
m_yuan=1;
}
void CEView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if(m_yuan==1)
{
m_Centerp=m_Aroundp=point;
}
CView::OnLButtonDown(nFlags, point);
}
void CEView::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CDC
pDC=GetDC();
if(m_yuan==1)

            m_Aroundp=point;
    DrawCircle(pDC,m_Centerp,m_Aroundp);
}
ReleaseDC(pDC);
CView::OnLButtonUp(nFlags, point);

}
void CEView::DrawCircle(CDC pDC, CPoint cenp, CPoint ardp)
{
int ra,a,b;
a=(ardp.x-cenp.x)
(ardp.x-cenp.x);
b=(ardp.y-cenp.y)*(ardp.y-cenp.y);
ra=(int)(sqrt(a+b));
pDC->Ellipse(cenp.x-ra,cenp.y-ra,cenp.x+ra,cenp.y+ra);
MidpointCircle(pDC,ra,cenp,cl);
}
void CEView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CDC* pDC=GetDC();
int nDrawmode=pDC->SetROP2(R2_NOT);
if(m_yuan==1 & nFlags & MK_LBUTTON )
{
CPoint prePnt,curPnt;
prePnt=m_Aroundp;
curPnt=point;
DrawCircle(pDC,m_Centerp,prePnt);
DrawCircle(pDC,m_Centerp,curPnt);
m_Aroundp=point;
}

pDC->SetROP2(nDrawmode);
ReleaseDC(pDC);
CView::OnMouseMove(nFlags, point);

}
void CEView::OnColor()
{
// TODO: Add your command handler code here
CColorDialog dlg;
dlg.DoModal();
cl=dlg.GetColor();
}

  • 写回答

1条回答 默认 最新

  • devmiao 2017-03-25 13:48
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?