emwin控件GRAPH实现XY曲线图绘制


WM_HWIN hGraph = 0;

GRAPH_SCALE_Handle hScaleHandle;    //水平刻度句柄
GRAPH_SCALE_Handle vScaleHandle;    //垂直刻度句柄
GRAPH_DATA_Handle dGraphDat1Handle; //Graph数据1句柄
GRAPH_DATA_Handle dGraphDat2Handle; //Graph数据1句柄

GUI_POINT point;


//创建控件
hGraph = GRAPH_CreateEx(20, 90,600, 310,0, WM_CF_SHOW | WM_CF_CONST_OUTLINE|WM_CF_MEMDEV,GRAPH_CF_GRID_FIXED_X, GUI_ID_GRAPH0);
//设置边框宽度
GRAPH_SetBorder(hGraph,50, 15,15,20);
//设置控件各部分的背景颜色                            
GRAPH_SetColor(hGraph, GUI_WHITE,GRAPH_CI_BK);
GRAPH_SetColor(hGraph, GUI_WINBLUE,GRAPH_CI_BORDER );
GRAPH_SetColor(hGraph, GUI_WHITE,GRAPH_CI_FRAME);
GRAPH_SetColor(hGraph, GUI_BLACK,GRAPH_CI_GRID);
//是否显示网格线,1显示,0不显示                            
GRAPH_SetGridVis(hGraph, 1);
//设置横向网格线宽度为25
GRAPH_SetGridDistX(hGraph, 25);
//设置纵网格线宽度为10
GRAPH_SetGridDistY(hGraph, 10);
//设置网格线显示的类型
GRAPH_SetLineStyleH(hGraph, GUI_LS_DOT);
GRAPH_SetLineStyleV(hGraph, GUI_LS_DOT);
//创建横轴刻度对象,两个刻度间隔25个像素
hScaleHandle = GRAPH_SCALE_Create(295, GUI_TA_HCENTER, GRAPH_SCALE_CF_HORIZONTAL, 25);
//GRAPH_SCALE_SetFont(hScaleHandle, &GUI_Font8x16);
GRAPH_SCALE_SetTextColor(hScaleHandle, GUI_WHITE);    
GRAPH_AttachScale(hGraph, hScaleHandle);
//创建纵轴刻度对象,两个刻度间隔10个像素
vScaleHandle = GRAPH_SCALE_Create(20, GUI_TA_HCENTER, GRAPH_SCALE_CF_VERTICAL, 10);
//GRAPH_SCALE_SetFont(vScaleHandle, &GUI_Font8x8);
GRAPH_SCALE_SetTextColor(vScaleHandle, GUI_WHITE);
GRAPH_SCALE_SetNumDecs(vScaleHandle, 0);
GRAPH_AttachScale(hGraph, vScaleHandle);
//GUI_Delay(1);//延时
//设置横向刻度比例因子,两个刻度值相差0.04*25,两个刻度间隔25个像素
GRAPH_SCALE_SetFactor(hScaleHandle, 0.04);
//设置纵向刻度比例因子,两个刻度值相差0.2*10,两个刻度间隔10个像素
GRAPH_SCALE_SetFactor(vScaleHandle, 0.2);//10*0.01


//曲线1                            
dGraphDat1Handle = GRAPH_DATA_XY_Create(GUI_BLUE, 15, 0, 0);    //创建GRAPH_DATA_XY对象        
GRAPH_AttachData(hGraph, dGraphDat1Handle);    //将数据对象附加到现有图形小工具。
//曲线2            
dGraphDat2Handle = GRAPH_DATA_XY_Create(GUI_GREEN, 15, 0, 0);    //创建GRAPH_DATA_XY对象        
GRAPH_AttachData(hGraph, dGraphDat2Handle);            //将数据对象附加到现有图形小工具。


//赋值

        for (i = 1; i <=15; i++)
        {
                point.x = i*25;
                //2个刻度对应10个像素,总的像素值放到刻度的什么地方
                point.y = buf[i-1]*10/(0.2*10);
                GUI_Delay(20);//延时
                GRAPH_DATA_XY_AddPoint(dGraphDat1Handle,&point);
                point.y = buf2[i-1];
                GRAPH_DATA_XY_AddPoint(dGraphDat2Handle,&point);
        }

 需手动删除控件

if(hGraph)
{
//删除控件之前需要分离数据对象和刻度对象,
//否则会报block to be deleted is already lock in _free()错误
GRAPH_DetachData(hGraph,dGraphDat1Handle);
if (s_n_hissig_type > RECORD_TM_RTD)
{

    GRAPH_DetachData(hGraph,dGraphDat2Handle);
}
GRAPH_DetachScale(hGraph,hScaleHandle);
GRAPH_DetachScale(hGraph,vScaleHandle);
//分离后的数据对象和刻度对象依然占用内存,需要手动删除
GRAPH_DATA_XY_Delete(dGraphDat1Handle);
if (s_n_hissig_type > RECORD_TM_RTD)
{

    GRAPH_DATA_XY_Delete(dGraphDat2Handle);
}
                        
GRAPH_SCALE_Delete(hScaleHandle);
GRAPH_SCALE_Delete(vScaleHandle);
//删除控件
WM_DeleteWindow(hGraph);
hGraph = 0;
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值