mfc中点画线 画不出来

voidCMFCApplication3View::OnLButtonDown(UINTnFlags,CPointpoint){//TODO:在此添加消息处理程序代码和/... void CMFCApplication3View::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
if (m_yuan == 1)
{
m_Centerp = m_Aroundp = point;
}
CView::OnLButtonDown(nFlags, point);
}

void CMFCApplication3View::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CDC* pDC = GetDC();
if (m_yuan == 1)
{
m_Aroundp = point;
DrawCircle(pDC, m_Centerp, m_Aroundp);
}
ReleaseDC(pDC);
CView::OnLButtonUp(nFlags, point);
}

void CMFCApplication3View::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
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 CMFCApplication3View::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 CMFCApplication3View::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 CMFCApplication3View::Onyuan()
{
// TODO: Add your command handler code here
m_yuan = 1;
}
void CMFCApplication3View::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 CMFCApplication3View::OnColor()
{
// TODO: 在此添加命令处理程序代码
CColorDialog dlg;
dlg.DoModal();
cl = dlg.GetColor();
}
展开
 我来答
单振心6513
2017-03-25 · TA获得超过184个赞
知道小有建树答主
回答量:385
采纳率:100%
帮助的人:232万
展开全部
你的意思是点划线仍然是直线的样子吗?如果是,两种可能:线型比例太小或者太大。若你画图尺寸较小,例如10以内的,那么就在特性面板里把线型比例设置得小些,可以设置成0.1看看;若你画图尺寸较大,例如1000,那么就需要把线型比例调大
追问
画圆啊
czy0095201
2017-03-25 · 超过14用户采纳过TA的回答
知道答主
回答量:183
采纳率:50%
帮助的人:13.9万
展开全部
有死循环
追问
哪里有
追答
你有隐式的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式