patatos123
patatos123
采纳率33.3%
2018-04-29 11:01

MATLAB GUI页面设计,求曲线图像

10
  • matlab
已采纳

创建绘制y=ax2+bx+c的图像的GUI,其中参数a、b、c及绘图范围等过过界面上的文本编辑框输入

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • maxos maxos 3年前

    图片说明
    关键代码如下:

     BOOL CDrawImageDlg::OnEraseBkgnd(CDC* pDC)
    {
        CDialogEx::OnEraseBkgnd(pDC);
        if (pDC == NULL)
        {
            return true;
        }
    
        // 从编辑框取值:
        std::wstring wsA = GetEditText(IDC_EDIT1);
        std::wstring wsB = GetEditText(IDC_EDIT2);
        std::wstring wsC = GetEditText(IDC_EDIT3);
        std::wstring wsRangeX = GetEditText(IDC_EDIT4);
        std::wstring wsRangeY = GetEditText(IDC_EDIT5);
        std::wstring wsDrawLeft = GetEditText(IDC_EDIT6);
        std::wstring wsDrawTop = GetEditText(IDC_EDIT7);
        std::wstring wsDrawRight = GetEditText(IDC_EDIT8);
        std::wstring wsDrawBottom = GetEditText(IDC_EDIT9);
    
        // 定义
        float fRangeX = (float)wcstof(wsRangeX.c_str(), NULL);
        float fRangeY = (float)wcstof(wsRangeY.c_str(), NULL);
    
        // 把编辑框的字符串转换成整数值:
        float nA = (float)wcstof(wsA.c_str(), NULL);
        float nB = (float)wcstof(wsB.c_str(), NULL);
        float nC = (float)wcstof(wsC.c_str(), NULL);
    
        // x轴与 y轴的起始量:
        int nStartX = (int)wcstol(wsDrawLeft.c_str(), NULL, 10);
        int nStartY = (int)wcstol(wsDrawTop.c_str(), NULL, 10);
    
        // X轴与Y轴的绘制区域,防止画出界:
        int nRangeWidth = (int)wcstol(wsDrawRight.c_str(), NULL, 10);
        int nRangeHeight = (int)wcstol(wsDrawBottom.c_str(), NULL, 10);
    
    
        // 绘制外框:
        pDC->Rectangle(nStartX, nStartY, nRangeWidth, nRangeHeight);
    
        // 计算坐标中心点:
        int nBaseX = nStartX + (nRangeWidth  - nStartX) / 2;
        int nBaseY = nStartY + (nRangeHeight - nStartY) / 2;
    
        // 绘制Y轴基线(坐标轴)
        pDC->MoveTo(nStartX, nBaseY);
        pDC->LineTo(nRangeWidth, nBaseY);
    
        // 绘制Y轴基线(坐标轴)
        pDC->MoveTo(nBaseX, nStartY);
        pDC->LineTo(nBaseX, nRangeHeight);
    
        // 绘制算法图像:
        int nFirstPoint = 0;
        float fX = 0.0f, fY = 0.0f;
        for (fX = -fRangeX; fX <= fRangeX; fX += 1.0f)
        {
            // 计算数值:
            fY = (float)nA * (fX * fX) + (float)nB * fX + (float)nC;
    
            // 绘制到屏幕上:
            int x = nBaseX + (int)fX;
            int y = nBaseY + (int)fY;
    
            if (nFirstPoint == 0)
            {
                pDC->MoveTo(x, y);
                nFirstPoint = 1;
            }
            pDC->LineTo(x, y);
        }
    
        return true;
    }
    

    这个上面不能发送RAR文件,Demo我放在百度网盘,下载地址是:

    https://pan.baidu.com/s/1W5RkLL2-MuIKJR6q3XwOwg

    我一点 C 币都没有了,如果能用上,求给一点C币,感激不尽。

    点赞 2 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 3年前

    用plot作图,其中abc用文本框str2num读取
    https://jingyan.baidu.com/article/7e440953cf7c192fc0e2efed.html

    点赞 1 评论 复制链接分享

相关推荐