16,545
社区成员




请问专家,如何在VC++6.0里用CWGRAPH控件画多条曲线?
我现在只能画一条。请指教,谢谢!
找到一个例子,是这么搞得,不过只能画两条线
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);
}
好像不行,出错。
以下内容引用gpt3.0
在VC++6.0中使用CWGRAPH控件绘制多条曲线,通常需要遵循以下步骤:
CWGRAPH m_wgraphtest;
。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;
}
以上代码只是一个基本的示例,实际应用中可能需要根据具体需求调整图表的样式和数据。此外,由于VC++6.0是一个较旧的开发环境,可能存在兼容性问题,建议在现代操作系统上测试以确保稳定性。如果需要更详细的指导或遇到特定问题,可以查阅相关的技术文档或寻求专业的技术支持。