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

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日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效