如何在VC++6.0里用CWGRAPH控件画多条曲线

ccbbcc 2024-05-24 10:09:00

请问专家,如何在VC++6.0里用CWGRAPH控件画多条曲线?

我现在只能画一条。请指教,谢谢!

...全文
192 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccbbcc 05-25
  • 打赏
  • 举报
回复

找到一个例子,是这么搞得,不过只能画两条线

BOOL CTestDlg::OnInitDialog()
{
    CDialog::OnInitDialog();

    // Add "About..." menu item to system menu.
    
    // IDM_ABOUTBOX must be in the system command range.
    ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    ASSERT(IDM_ABOUTBOX < 0xF000);

    CMenu* pSysMenu = GetSystemMenu(FALSE);
    if (pSysMenu != NULL)
    {
        CString strAboutMenu;
        strAboutMenu.LoadString(IDS_ABOUTBOX);
        if (!strAboutMenu.IsEmpty())
        {
            pSysMenu->AppendMenu(MF_SEPARATOR);
            pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
        }
    }

    // Set the icon for this dialog.  The framework does this automatically
    //  when the application's main window is not a dialog
    SetIcon(m_hIcon, TRUE);            // Set big icon
    SetIcon(m_hIcon, FALSE);        // Set small icon


    // TODO: Add extra initialization here
    

    
 
        
        DWORD numElements[]={2,1};
    m_saRet.Create(VT_R8,2,numElements);    //创建一个安全数组
    index[1]=0;
       
 
    return TRUE;  // return TRUE  unless you set the focus to a control
}

```c
void CLabviewDlg::OnButton1() 
{
    // TODO: Add your control notification handler code here
    m_lData=0;
    m_graph.ClearData();
    SetTimer(1,10,NULL);
}

```c

void CLabviewDlg::OnTimer(UINT nIDEvent) 
{
    // TODO: Add your message handler code here and/or call default
    switch(nIDEvent)
    {
    case 1:
        m_lData++;
        m_graph.SetYDataAppend(COleVariant(sin(3.1415*m_lData/100)));
        break;
    case 2:
        m_lData++;
        for(index[0]=0;index[0]<2;index[0]++)
        {
            double val=index[0]*0.5+sin(3.1415*m_lData/100);
            m_saRet.PutElement(index,&val);        //将一个单一的元素放入数组中
        }
        m_graph.SetYDataAppend(m_saRet);                
        break;
    }
    CDialog::OnTimer(nIDEvent);
}


ccbbcc 05-24
  • 打赏
  • 举报
回复

好像不行,出错。

  • 打赏
  • 举报
回复

以下内容引用gpt3.0

在VC++6.0中使用CWGRAPH控件绘制多条曲线,通常需要遵循以下步骤:

1. 添加CWGRAPH控件到对话框

  • 打开VC++6.0的IDE,创建一个新的MFC应用程序或者打开现有的项目。
  • 在设计视图中,右键点击对话框,选择“插入控件”。
  • 在控件列表中找到“CWGRAPH”控件,插入到对话框中。

2. 编写代码以绘制曲线

  • 在对话框的头文件中声明CWGRAPH控件的指针,例如:CWGRAPH m_wgraphtest;
  • 在对话框的实现文件中,初始化CWGRAPH控件,并设置其属性,例如:
    void CYourDialog::DoDataExchange(CDataExchange* pDX)
    {
        CDialog::DoDataExchange(pDX);
        DDX_Control(pDX, IDC_YOUR_GRAPH_CONTROL_ID, m_wgraphtest);
    }
    
    BOOL CYourDialog::OnInitDialog()
    {
        CDialog::OnInitDialog();
        
        // 设置图表的属性,例如标题、坐标轴标签等
        m_wgraphtest.SetTitle(_T("Your Chart Title"));
        m_wgraphtest.SetSubTitle(_T("Your Subtitle"));
        m_wgraphtest.SetXAxisLabel(_T("X Axis Label"));
        m_wgraphtest.SetYAxisLabel(_T("Y Axis Label"));
        
        // 添加曲线系列
        CWGraphSeries* series1 = m_wgraphtest.NewSeries();
        CWGraphSeries* series2 = m_wgraphtest.NewSeries();
        
        // 设置曲线系列的属性,例如颜色、线宽等
        series1->SetColor(RGB(255, 0, 0)); // 红色
        series2->SetColor(RGB(0, 0, 255)); // 蓝色
        
        // 添加数据点到曲线系列
        series1->AddPoint(1, 1);
        series1->AddPoint(2, 2);
        series2->AddPoint(1, 3);
        series2->AddPoint(2, 4);
        
        // 刷新图表以显示新的曲线
        m_wgraphtest.Redraw();
        
        return TRUE;
    }
    

3. 编译和运行程序

  • 编译程序,如果没有错误,运行程序查看图表是否按预期显示。

以上代码只是一个基本的示例,实际应用中可能需要根据具体需求调整图表的样式和数据。此外,由于VC++6.0是一个较旧的开发环境,可能存在兼容性问题,建议在现代操作系统上测试以确保稳定性。如果需要更详细的指导或遇到特定问题,可以查阅相关的技术文档或寻求专业的技术支持。

16,489

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧