关于图形学里中心画圆算法的vc++的程序实现~急用~必须能运行得出来结果的!!

 我来答
百度网友5f84418
2013-10-14 · TA获得超过202个赞
知道答主
回答量:93
采纳率:0%
帮助的人:24.9万
展开全部
测试过了能用,MFC源码如下
void CTest1View:: roundMid(int x1,int y1,int R,CDC* pDC)

{

int x=0,y=R;

int d=1-R; //起点(0,R),下一点中点(1,R-0.5),d=1*1+(R-0.5)*(R-0.5)-R*R=1.25-R,d只参与整数运算,所以小数部分可省略

while(y>x) //y>x即第一象限的第2区八分圆

{

pDC->SetPixel(x+x1,y+y1,RGB(255,0,0)); //圆心(x1,y1),画点时直接相加平移,画2区

pDC->SetPixel(y+x1,x+y1,RGB(255,0,0)); //画1区

pDC->SetPixel(-x+x1,y+y1,RGB(255,0,0)); //画3区

pDC->SetPixel(-y+x1,x+y1,RGB(255,0,0)); //画4区

pDC->SetPixel(-x+x1,-y+y1,RGB(255,0,0)); //画5区

pDC->SetPixel(-y+x1,-x+y1,RGB(255,0,0)); //画6区

pDC->SetPixel(x+x1,-y+y1,RGB(255,0,0)); //画7区

pDC->SetPixel(y+x1,-x+y1,RGB(255,0,0)); //画8区

if(d<0)

d=d+2*x+3; //d的变化

else

{

d=d+2*(x-y)+5; //d<=0时,d的变化

y--; //y坐标减1

}

x++; //x坐标加1

}

}
追问
我试过了,总是这个错误=  。=  怎么搞啊~
error C2653: 'CTest1View' : is not a class or namespace name
追答
MFC用过吗?Test1是我新建的MFC单文档名称,所以生成了CTest1View类。如果你自己新建的MFC工程,只要在你相应的View类当中把函数代码COPY进去就行。
首先在XXView.h文件中声明函数
class CTest1View : public CView
{
。。。。。。。
。。。。。。
public:
void roundMid(int x1,int y1,int R,CDC* pDC);
。。。
}
然后在XXView.c中写这个函数就是上面的代码
最后在 XXView.c的OnDraw函数中调用这个函数
void CXX1View::OnDraw(CDC* pDC)
{
CTest1Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
roundMid(200,200,50,pDC);
// TODO: add draw code for native data here
}
运行就可以了;
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式