|

楼主 |
发表于 2019-9-8 17:13:08
|
显示全部楼层
case WIDGET_ITEM_DRAW_FOCUS://绘制前景色
hWin = (WM_GET_PARENT[C-1])(pDrawItemInfo->hWin);//=前面的hWin就是Window本身
WM_GetUserData(hWin, &winBMP, sizeof(winBMP));//从用户数据区读出"页面图片结构体"指针
//获取此控件相对于主页面(比如:WINDOW)位置偏移坐标
// x0 = WM_GetWindowOrgX(hWin)-WM_GetWindowOrgY(pDrawItemInfo->hWin);
// y0 = WM_GetWindowOrgY(hWin)-WM_GetWindowOrgY(pDrawItemInfo->hWin);
// x0=WM_GetWindowOrgX(pDrawItemInfo->hWin);
// y0=WM_GetWindowOrgY(pDrawItemInfo->hWin);
x0 = WM_GetWindowOrgX(hWin);
y0 = WM_GetWindowOrgY(hWin) ;
y= WM_GetWindowSizeY(pDrawItemInfo->hWin);
y0=y0+y/2;
GUI_DrawBitmap(winBMP->mark, x0, y0);//从页面坐标显示图片,emWin会自己剪切出这个控件范围的图片
break;
case WIDGET_ITEM_DRAW_SHAFT://绘制背景色
hWin = (WM_GET_PARENT[C-1])(pDrawItemInfo->hWin);//=前面的hWin就是Window本身
WM_GetUserData(hWin, &winBMP, sizeof(winBMP));//从用户数据区读出"页面图片结构体"指针
//获取此控件相对于主页面(比如:WINDOW)位置偏移坐标
// x0 = WM_GetWindowOrgX(hWin)-WM_GetWindowOrgY(pDrawItemInfo->hWin);
// y0 = WM_GetWindowOrgY(hWin)-WM_GetWindowOrgY(pDrawItemInfo->hWin);
// x0=WM_GetWindowOrgX(pDrawItemInfo->hWin);
// y0=WM_GetWindowOrgY(pDrawItemInfo->hWin);
x0 = WM_GetWindowOrgX(hWin);
y0 = WM_GetWindowOrgY(hWin) ;
y= WM_GetWindowSizeY(pDrawItemInfo->hWin);
y0=y0+y/2;
GUI_DrawBitmap(winBMP->normal, x0, y0);//从页面坐标显示图片,emWin会自己剪切出这个控件范围的图片
break;
case WIDGET_ITEM_DRAW_THUMB://绘制滑块
hWin = (WM_GET_PARENT[C-1])(pDrawItemInfo->hWin);
WM_GetUserData(hWin, &winBMP, sizeof(winBMP));
if(((SLIDER_SKINFLEX_INFO *)(pDrawItemInfo->p))->IsPressed != 1)
GUI_DrawBitmap(winBMP->thumbN, pDrawItemInfo->x0, pDrawItemInfo->y0);//pDrawItemInfo->x0这个坐标是ID_SLIDER_0内部的子坐标
//GUI_DrawBitmap(winBMP->thumbN, x0, y0);
else
GUI_DrawBitmap(winBMP->thumbM, pDrawItemInfo->x0, pDrawItemInfo->y0);
//GUI_DrawBitmap(winBMP->thumbM, x0, y0);
break;
通过设置前景色(mark)和背景色(normol)只能做成图示样子,如何才能做到滑动的时候从背景色做成前景色。
在主case WM_NOTIFY_PARENT中 slider (WM_NOTIFICATION_VALUE_CHANGED:)下我需要做些什么?我缺少了什么吗?
|
-
|