MFC编写dda bresenham

问题illegal else without matching if
代码:
else if(MenuDrawType=2)
{

        if (PressNum == 0)
        {
            //第一次点击
        startP = point;
        endP = point;//使线段一直都在,终点始终是鼠标
        PressNum++;
        }
        else 
        {
            //第二次点击
        endP = point;
        int dx = endP.x - startP.x;
        int dy = endP.y - startP.y;
        int steps, k;
        float xincrement, yincrement, x = startP.x, y = startP.y;
        if (abs(dx) > abs(dy)) 
            steps = abs(dx);
        else steps = abs(dy);
        xincrement = dx /float(steps);
        yincrement = dy / float(steps);
        SetPixel(dc, startP.x, startP.y, RGB(255, 0, 0));
        for (k = 0; k < steps; k++) {
            x += xincrement;
            y += yincrement;
            SetPixel(dc, x, y, RGB(255, 0, 0));
        }
    

}
 if(MenuDrawType=3 )
 {
   if (PressNum == 0)
   {//第一次点击
        startP = point;
        endP = point;//使线段一直都在,终点始终是鼠标
        PressNum++;
    }
    else 
    {//第二次点击
        endP = point;
        double k, e;
        int p, deltaX, deltaY, x1, y1, x2, y2;
        x1 = startP.x;
        y1 = startP.y;
        x2 = endP.x;
        y2 = endP.y;
        deltaX = abs(x2 - x1);
        deltaY = abs(y2 - y1);
        p = 2 * deltaY - deltaX;
        int twoDy = 2 * deltaY;
        int twoDx = 2 * deltaX;
        int twoDyDx = 2 * (deltaY - deltaX);
        int twoDxDy = 2 * (deltaX - deltaY);
        int x, y, xEnd, yEnd;
        for(k;k255, 0, 0));
            x1=x1+1;
            if(p>=0)
            {
              y1=y+1;
              p+=twoDxDy;
            
            }
            p+=twoDy;
        
        }

    }
 }

望采纳

  • 代码中存在语法错误:在第一个if语句的else if语句中,您使用了单等号(=)来判断MenuDrawType的值,这会导致等式右侧的值被赋值给MenuDrawType,而不是判断MenuDrawType的值是否等于2。同样的,在第二个if语句中也存在类似的错误。
  • 要解决这个问题,您需要使用双等号(==)来判断MenuDrawType的值。例如,在第一个if语句的else if语句中,应该将单等号(=)改为双等号(==)。

修改后的代码应该是这样的:

if(MenuDrawType == 2)
{
// 省略其他代码
}
else if(MenuDrawType == 3)
{
// 省略其他代码
}