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
    关注
    评论

报告相同问题?

悬赏问题

  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用
  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害