移植完成后,再介绍一下Graph控件的使用。STemwin控件的使用思想在于控件的句柄。使用过matlab做GUI界面的同学应该对这个词不陌生。在对控件做相应操作时,一定要先获得控件的句柄,而句柄则是控件的“身份识别信息”。在main函数中,先申明
WM_HWIN hGraph; //Graph控件句柄
GRAPH_DATA_Handle hData; //曲线的句柄
GRAPH_SCALE_Handle hScale; //刻度的句柄
其次给句柄赋值:
hGraph = WM_GetDialogItem(hWin, ID_GRAPH_0); //1获得Graph控件句柄
hData = GRAPH_DATA_YT_Create(GUI_GREEN,240, &m, 1); //2.获取数据对象的句柄
GRAPH_AttachData(hGraph, hData); //3.将数据对象添加到Graoh控件中
然后对Graph控件进行配置:
GRAPH_SetVSizeX(hGraph, 240); //设置X和Y轴的虚拟尺寸
GRAPH_SetVSizeY(hGraph, 320);
GRAPH_SetGridDistX(hGraph, 10); //设置栅格距离
GRAPH_SetGridDistY(hGraph, 10);
GRAPH_SetGridVis(hGraph, 1); //显示栅格
GRAPH_DATA_YT_SetAlign(hData, GRAPH_ALIGN_LEFT); //数据左对齐
GRAPH_DATA_YT_Clear(hData); //清除数据对象的所有数据项
hScale = GRAPH_SCALE_Create(28, GUI_TA_RIGHT, GRAPH_SCALE_CF_VERTICAL | GRAPH_SCALE_CF_HORIZONTAL, 10); //刻度创建
GRAPH_AttachScale(hGraph, hScale);
GRAPH_SCALE_SetFactor(hScale,0.5); //设置用于计算要绘制的编号的因子,也就是刻度的比例
本例程显示的是不同频率的正弦波合成方波的图像,在main.c函数中代码如下:
while(1)
{
for(i = 0;i <= 500;i++)
{
n = 0;
for(j = 1;j <= N;j = j + 2) //计算合成方波
{
n = n + 50.0*sin(2*3.14*0.01*i*j)/j;
}
n = n + 50; //偏移波形
m = (signed short)n;
GRAPH_DATA_YT_AddValue(hData, m*2); //添加到hData中并显示
GUI_Delay(10); //STemwin刷新屏幕
}
}
|