|

楼主 |
发表于 2024-10-16 18:33:48
|
显示全部楼层
谢谢硬汉哥,我这个表格每次重绘之后可以了。但是我看了你的二代示波器在使用过程中不用重绘,二代示波器的表格背景画完之后为什么不用重绘的?我这个表格也是固定的
然后实验了Graph发现没有2D方便,我这里还想做刻度的,但是Graph刻度两个刻度线间隔和两个刻度值好像是绑定的,Graph有什么方法让刻度线宽度是刻度线宽度,刻度值是刻度值差值的
···
GRAPH_DrawChart = GRAPH_CreateEx(180, 115, 570, 305, 0, WM_CF_SHOW, 0, GUI_ID_GRAPH0);
//设置边框宽度
GRAPH_SetBorder(GRAPH_DrawChart, 30, 10, 10, 15);
//设置控件各部分的背景颜色
GRAPH_SetColor(GRAPH_DrawChart, GUI_DARKGRAY, GRAPH_CI_BK);
GRAPH_SetColor(GRAPH_DrawChart, GUI_DARKGRAY, GRAPH_CI_BORDER);
GRAPH_SetColor(GRAPH_DrawChart, GUI_WHITE, GRAPH_CI_FRAME);
GRAPH_SetColor(GRAPH_DrawChart, GUI_WHITE, GRAPH_CI_GRID);
//是否显示网格线,1显示,0不显示
GRAPH_SetGridVis(GRAPH_DrawChart, 1);
//设置横向网格线宽度为25
GRAPH_SetGridDistX(GRAPH_DrawChart, 1000);
//设置纵网格线宽度为10
GRAPH_SetGridDistY(GRAPH_DrawChart, Spacing_y);
//设置网格线显示的类型
GRAPH_SetLineStyleH(GRAPH_DrawChart, GUI_LS_SOLID);
GRAPH_SetLineStyleV(GRAPH_DrawChart, 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(GRAPH_DrawChart, hScaleHandle);
//设置横向刻度比例因子,两个刻度值相差0.04*25,两个刻度间隔25个像素
//GRAPH_SCALE_SetFactor(hScaleHandle, 0.04);
}
//创建纵轴刻度对象,两个刻度间隔17个像素
{
vScaleHandle = GRAPH_SCALE_Create(25, GUI_TA_VCENTER| GUI_TA_RIGHT, GRAPH_SCALE_CF_VERTICAL, Spacing_y);
vScaleHandle1 = GRAPH_SCALE_Create(25, GUI_TA_VCENTER | GUI_TA_RIGHT, GRAPH_SCALE_CF_VERTICAL, 1);
GRAPH_SCALE_SetTickDist(vScaleHandle1, Spacing_y);
//GRAPH_SCALE_SetFont(vScaleHandle, &GUI_Font8x8);
GRAPH_SCALE_SetTextColor(vScaleHandle1, GUI_WHITE);
GRAPH_SCALE_SetNumDecs(vScaleHandle1, 0);
GRAPH_AttachScale(GRAPH_DrawChart, vScaleHandle1);
//设置纵向刻度比例因子,两个刻度值相差0.2*10,两个刻度间隔10个像素
GRAPH_SCALE_SetFactor(vScaleHandle1, Diy);//10*0.01
}
{
//曲线1
dGraphDat1Handle = GRAPH_DATA_XY_Create(GUI_BLUE, 15, 0, 0); //创建GRAPH_DATA_XY对象
GRAPH_AttachData(GRAPH_DrawChart, dGraphDat1Handle); //将数据对象附加到现有图形小工具。
//曲线2
dGraphDat2Handle = GRAPH_DATA_XY_Create(GUI_GREEN, 15, 0, 0); //创建GRAPH_DATA_XY对象
GRAPH_AttachData(GRAPH_DrawChart, dGraphDat2Handle); //将数据对象附加到现有图形小工具。
//赋值
int i;
for (i = 1; i <= 15; i++)
{
point.x = i * 25;
//2个刻度对应10个像素,总的像素值放到刻度的什么地方
point.y = buf[i - 1] * 10 / (0.2 * 10);
//GUI_Delay(5);//延时
GRAPH_DATA_XY_AddPoint(dGraphDat1Handle, &point);
point.y = buf2[i - 1];
GRAPH_DATA_XY_AddPoint(dGraphDat2Handle, &point);
}
}
···
我这里Diy是数值差值,Spacing_y是刻度线宽度,但是宽度17的时候数值最低也是17了 。
|
|