搜索
bottom↓
回复: 0

请问emwin做仿苹果亮度调节控件色差问题

[复制链接]

出0入0汤圆

发表于 2020-3-21 08:12:34 | 显示全部楼层 |阅读模式
最近搞起了emwin,设计一个类似于苹果ios控制栏上的亮度调节控件,其中用到了圆角矩形。
现在遇到白色部分颜色跟背景色相减变暗了。我想要纯白的,请问程序还需要如何设计?谢谢


  1. /*********************************************************************
  2. *                                                                    *
  3. *                SEGGER Microcontroller GmbH                         *
  4. *        Solutions for real time microcontroller applications        *
  5. *                                                                    *
  6. **********************************************************************
  7. *                                                                    *
  8. * C-file generated by:                                               *
  9. *                                                                    *
  10. *        GUI_Builder for emWin version 5.50                          *
  11. *        Compiled Jun 11 2019, 16:51:25                              *
  12. *        (c) 2019 Segger Microcontroller GmbH                        *
  13. *                                                                    *
  14. **********************************************************************
  15. *                                                                    *
  16. *        Internet: www.segger.com  Support: support@segger.com       *
  17. *                                                                    *
  18. **********************************************************************
  19. */

  20. // USER START (Optionally insert additional includes)
  21. #include "my_Anim.h"
  22. #include "switchWin.h"
  23. // USER END

  24. #include "DIALOG.h"

  25. /*********************************************************************
  26. *
  27. *       Defines
  28. *
  29. **********************************************************************
  30. */
  31. #define ID_WINDOW_0              (GUI_ID_USER + 0x00)


  32. // USER START (Optionally insert additional defines)
  33. // USER END

  34. /*********************************************************************
  35. *
  36. *       Static data
  37. *
  38. **********************************************************************
  39. */

  40. // USER START (Optionally insert additional static data)
  41. // USER END

  42. /*********************************************************************
  43. *
  44. *       _aDialogCreate
  45. */
  46. static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
  47.   { WINDOW_CreateIndirect, "Window_ctrl_", ID_WINDOW_0, 0, 0, 240, 240, 0, 0x0, 0 }
  48.   // USER START (Optionally insert additional widgets)
  49.   // USER END
  50. };

  51. /*********************************************************************
  52. *
  53. *       Static code
  54. *
  55. **********************************************************************
  56. */

  57. // USER START (Optionally insert additional static code)
  58. extern GUI_CONST_STORAGE GUI_BITMAP bmicon_light;
  59. // USER END


  60. #define IMG_BRIGHTNESS_X 11
  61. #define DRAW_BRIGHTNESS_X 10
  62. #define DRAW_BRIGHTNESS_Y 187
  63. #define DRAW_BRIGHTNESS_XSIZE 220+2
  64. #define DRAW_BRIGHTNESS_YSIZE 40+2
  65. static int _DrawSkinFlex(const WIDGET_ITEM_DRAW_INFO* pDrawItemInfo) {
  66.         int x;
  67.         int y;
  68.         static int brightnessWidth = 0;
  69.         switch (pDrawItemInfo->Cmd)
  70.         {
  71.         case WIDGET_ITEM_DRAW_THUMB:
  72.                 brightnessWidth = pDrawItemInfo->x1;
  73.                 return 0;
  74.         case WIDGET_ITEM_DRAW_TICKS:
  75.                 return 0;
  76.         case WIDGET_ITEM_DRAW_FOCUS:
  77.                 return 0;

  78.         case WIDGET_ITEM_DRAW_SHAFT:

  79.                 char str[100];
  80.                 snprintf(str, sizeof(str), "x0:%d,y0:%d,x1:%d,y1:%d\r\n", pDrawItemInfo->x0, pDrawItemInfo->y0, pDrawItemInfo->x1, pDrawItemInfo->y1);
  81.                 GUI_X_Log(str);


  82.                 GUI_SetDrawMode(GUI_DM_NORMAL);
  83.                 ////GUI_AA_FillRoundedRect(pDrawItemInfo->x0, pDrawItemInfo->y0, brightnessWidth, pDrawItemInfo->y1, (pDrawItemInfo->y1 - pDrawItemInfo->y0) / 2);
  84.                 GUI_FillRect(pDrawItemInfo->x0, pDrawItemInfo->y0, brightnessWidth, pDrawItemInfo->y1);

  85.                 GUI_SetDrawMode(GUI_DM_XOR);

  86.                 GUI_AA_FillRoundedRect(pDrawItemInfo->x0, pDrawItemInfo->y0, pDrawItemInfo->x1, pDrawItemInfo->y1, (pDrawItemInfo->y1 - pDrawItemInfo->y0) / 2);

  87.                 GUI_SetDrawMode(GUI_DM_NORMAL);
  88.                 GUI_SetColor(GUI_MAKE_COLOR(0x00343434));
  89.                 //GUI_SetColor(GUI_BLACK);
  90.                 GUI_AA_FillRoundedRect(pDrawItemInfo->x0, pDrawItemInfo->y0, pDrawItemInfo->x1, pDrawItemInfo->y1, (pDrawItemInfo->y1 - pDrawItemInfo->y0) / 2-2);

  91.                 GUI_InvertRect(pDrawItemInfo->x0, pDrawItemInfo->y0, brightnessWidth, pDrawItemInfo->y1);

  92.                 //GUI_FillRect(pDrawItemInfo->x0, pDrawItemInfo->y0, brightnessWidth, pDrawItemInfo->y1);

  93.                 //GUI_DrawBitmap(&bmicon_light, IMG_BRIGHTNESS_X, pDrawItemInfo->y0);

  94.                 return 0;
  95.         default:
  96.                 //return SLIDER_DrawSkinFlex(pDrawItemInfo);
  97.                 break;
  98.         }
  99. }


  100. /*********************************************************************
  101. *
  102. *       _cbDialog
  103. */
  104. static void _cbDialog(WM_MESSAGE* pMsg) {
  105.         // USER START (Optionally insert additional variables)
  106.         static WM_HWIN            hSlider = NULL;
  107.         int                          NCode;
  108.         static int Value;
  109.         // USER END

  110.         switch (pMsg->MsgId) {
  111.         case WM_INIT_DIALOG:
  112.                 WINDOW_SetBkColor(pMsg->hWin, GUI_BLACK);

  113.                 SLIDER_SetDefaultSkin(_DrawSkinFlex);
  114.                 hSlider = SLIDER_Create(DRAW_BRIGHTNESS_X, DRAW_BRIGHTNESS_Y, DRAW_BRIGHTNESS_XSIZE, DRAW_BRIGHTNESS_YSIZE, pMsg->hWin, GUI_ID_SLIDER0, WM_CF_SHOW, 0);
  115.                
  116.                 SLIDER_SetWidth(hSlider,0);
  117.                 SLIDER_SetRange(hSlider, 0, 100);
  118.                 WM_SetFocus(hSlider);
  119.                 // USER END
  120.                 break;
  121.         case WM_NOTIFY_PARENT:
  122.                 NCode = pMsg->Data.v;
  123.                 switch (NCode)
  124.                 {
  125.                 case WM_NOTIFICATION_VALUE_CHANGED:
  126.                         Value = SLIDER_GetValue(pMsg->hWinSrc);

  127.                         break;
  128.                 }
  129.                 break;
  130.                 // USER START (Optionally insert additional message handling)
  131.         case WM_TOUCH:
  132.                 touchSwitchWIn(pMsg, NULL, NULL, CreateWindow_clock_, NULL);
  133.         case WM_PAINT:
  134.                 //GUI_SetColor(GUI_MAKE_COLOR(0x00343434));
  135.                 //GUI_AA_FillRoundedRect(DRAW_BRIGHTNESS_X, DRAW_BRIGHTNESS_Y, DRAW_BRIGHTNESS_X + DRAW_BRIGHTNESS_XSIZE, DRAW_BRIGHTNESS_Y + DRAW_BRIGHTNESS_YSIZE, DRAW_BRIGHTNESS_YSIZE / 2);
  136.                 //GUI_SetColor(GUI_WHITE);
  137.                 //GUI_AA_FillRoundedRect(DRAW_BRIGHTNESS_X, DRAW_BRIGHTNESS_Y, DRAW_BRIGHTNESS_X + (DRAW_BRIGHTNESS_XSIZE/100)*Value, DRAW_BRIGHTNESS_Y + DRAW_BRIGHTNESS_YSIZE, DRAW_BRIGHTNESS_YSIZE / 2);
  138.                 //GUI_DrawBitmap(&bmicon_light, IMG_BRIGHTNESS_X, IMG_BRIGHTNESS_Y);

  139.                 //GUI_SetFont(&GUI_Font13H_ASCII);
  140.                 //GUI_SetColor(GUI_WHITE);
  141.                 //GUI_GotoXY(0,100);
  142.                 //GUI_DispDecMin(Value);
  143.                
  144.                 char str[100];
  145.                 snprintf(str, sizeof(str), "Value = %d\r\n", Value);
  146.                 GUI_X_Log(str);
  147.                 break;
  148.                 // USER END
  149.         default:
  150.                 WM_DefaultProc(pMsg);
  151.                 break;
  152.         }
  153. }

  154. /*********************************************************************
  155. *
  156. *       Public code
  157. *
  158. **********************************************************************
  159. */
  160. /*********************************************************************
  161. *
  162. *       CreateWindow_ctrl_
  163. */
  164. WM_HWIN CreateWindow_ctrl_(void);
  165. WM_HWIN CreateWindow_ctrl_(void) {
  166.         WM_HWIN hWin;

  167.         hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);
  168.         WM_DisableWindow(hWin);
  169.         return hWin;
  170. }

  171. // USER START (Optionally insert additional public code)
  172. // USER END

  173. /*************************** End of file ****************************/
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 03:24

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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