void CYuanView::OnYuan() 
{
// TODO: Add your command handler code here
    CDC *P=GetDC();
MidCircle(200,200,100,1,P);
}
void MidCircle(int xc,int yc,int r,int color,CDC *q)
{
int x=0,y=r,d=1-r; WholeCircle(xc,yc,x,y,color,q);
while(x<=y)
{
if(d<0)  {d+=2*x+3;x++;}
else {d+=2*(x-y)+5;x++;y--;}
WholeCircle(xc,yc,x,y,color,q); }
}这样调用就可以,但是
void CMy321View::On2() 
{
CDC* pDC=GetDC();
// TODO: Add your command handler code here
pDC->Ellipse(30,30,110,110);//绘制一个矩形
FourLinkFill(pDC,70,70,RGB(0,0,0),RGB(255,0,0)); //填充该矩形

}
void FourLinkFill(CDC *pDC, int x, int y, COLORREF boundaryColor, COLORREF fillColor)
{
COLORREF intColor=pDC->GetPixel(x,y);//得到当前填充点的颜色
if((intColor!=boundaryColor)&&(intColor!=fillColor)){
pDC->SetPixel(x,y,fillColor);
FourLinkFill(pDC,x+1,y,boundaryColor,fillColor);
FourLinkFill(pDC,x-1,y,boundaryColor,fillColor);
FourLinkFill(pDC,x,y+1,boundaryColor,fillColor);
FourLinkFill(pDC,x,y-1,boundaryColor,fillColor);//递归填充相邻的四点
} }就不行呢?

解决方案 »

  1.   

    你把 void FourLinkFill(CDC *pDC, int x, int y, COLORREF boundaryColor, COLORREF fillColor)移动到 void CMy321View::On2()  函数上应该就OK了
      

  2.   


    void CMy321View::On2()  
    {
    CDC* pDC=GetDC();
    // TODO: Add your command handler code here
    pDC->Ellipse(30,30,110,110);//绘制一个矩形
    //如果不是类成员函数,使用前先声明
    void FourLinkFill(CDC *pDC, int x, int y, COLORREF boundaryColor, COLORREF fillColor);
    FourLinkFill(pDC,70,70,RGB(0,0,0),RGB(255,0,0)); //填充该矩形}
    //如果不是类成员函数,使用前先声明。或者把FourLinkFill这个函数放到On2()  之前定义也可以
      

  3.   

    从代码看FourLinkFill不是类成员函数,使用规则同C语言中普通函数一样:
          1、先声明,后使用。
          2、在调用函数前定义。
      

  4.   

    //如果不是类成员函数,使用前先声明。或者把FourLinkFill这个函数放到On2() 之前定义也可以最基本的知识