硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3869|回复: 3
收起左侧

[emWin] slider如何更改皮肤

[复制链接]

16

主题

31

回帖

79

积分

初级会员

积分
79
发表于 2019-9-6 17:14:06 | 显示全部楼层 |阅读模式
slider如何更改皮肤?(以thumb为界限,前景是亮色图片,后景是暗色图片)有哪位做成功过?烦请给个例子,多谢。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115778
QQ
发表于 2019-9-6 18:07:18 | 显示全部楼层
自己改造SLIDER显示外观的方法分享
http://www.armbbs.cn/forum.php?m ... 3724&fromuid=58
(出处: 硬汉嵌入式论坛)

在版主的帮助下,成功将SLIDER控件改造完成。
http://www.armbbs.cn/forum.php?m ... 7250&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

16

主题

31

回帖

79

积分

初级会员

积分
79
 楼主| 发表于 2019-9-8 17:13:08 | 显示全部楼层
eric2013 发表于 2019-9-6 18:07
自己改造SLIDER显示外观的方法分享
http://www.armbbs.cn/forum.php?mod=viewthread&tid=13724&fromuid=58 ...

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:)下我需要做些什么?我缺少了什么吗?
亮度.PNG
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115778
QQ
发表于 2019-9-9 00:16:36 | 显示全部楼层
lyw851230 发表于 2019-9-8 17:13
case WIDGET_ITEM_DRAW_FOCUS://绘制前景色
                hWin = (WM_GET_PARENT[C-1])(pDrawItemInfo->hWin);//=前 ...

回头我也试试。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-18 05:08 , Processed in 0.432959 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表