hhgdbebjs 2022-12-23 21:56 采纳率: 100%
浏览 11
已结题

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;k<deltaX;k++)
        {
              SetPixel(dc, startP.x, startP.y, RGB(255, 0, 0));
            x1=x1+1;
            if(p>=0)
            {
              y1=y+1;
              p+=twoDxDy;
            
            }
            p+=twoDy;
        
        }

    }
 }
  • 写回答

1条回答 默认 最新

  • ShowMeAI 2022-12-23 23:21
    关注

    望采纳

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

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

    if(MenuDrawType == 2)
    {
    // 省略其他代码
    }
    else if(MenuDrawType == 3)
    {
    // 省略其他代码
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月1日
  • 已采纳回答 12月24日
  • 创建了问题 12月23日

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?