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

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

2个回答

图片说明
关键代码如下:

 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币,感激不尽。

patatos123
patatos123 谢谢
2 年多之前 回复

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐