打印
[STM32F4]

【STM32F469I试用】学习记录3.STemwin界面开发多媒体

[复制链接]
3860|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pingis58|  楼主 | 2015-12-22 23:56 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 pingis58 于 2015-12-23 16:56 编辑

折腾一晚上,差点死在背景图片上。先上张图,然后记录设计过程。
                       
1,工程准备:
     原本打算工程生成尽量使用STCube MX的,效果不尽人意,自动生成驱动还行,也没找到STemwin,所以就借官方的demo发挥下,改写自己的界面移植。
原始工程路径如下:\stm32cubef4\STM32Cube_FW_F4_V1.10.0\Projects\STM32469I-Discovery\Applications\STemWin\STemWin_SampleDemo\MDK-ARM
完整目录,是在stm32cubef4的解压包下,找到STM32469I-Discovery。
2,资源准备:
    1)背景图片,自己随便找喜欢的。
    2)应用程序图标,要效果好看最好是 icon 格式,百度查找喜欢的,如下图
                     
    3)软件工具(图片转源码)
         工具路径,以MDK5为例:E:\Keil_v5\ARM\Pack\Keil\MDK-Middleware\6.5.0\emWin\Tool
                   
          上图第一个 BmpCvt是图片转源码的工具,GUIBuilder是直接图形化开发界面,直接生成源码使用的软件。
3,图标转换
       1)先设计界面
            双击GUIBuilder工具,添加window控件
            
           如图红色框,我们的屏是800 * 480 像素的,设置好。添加背景图,先选择  Image  控件,同样在左下角设置 800 * 480尺寸,然后在控件上右击添加背景图片
            
            这样生成背景图是最好的,省得麻烦,但我在此保存,生成C文件的时候,两台笔记本,一台WIN7 64位,一台XP的,都会卡死,然后崩溃,不知道是软件BUG,还是系统不兼容。所以这步看你能不能用,我的背景图生成方式用了另外一种。后绪会在代码中介绍。
           添加主界面图标的ICONVIEW,同样,我在添加后,再添加图标图片的时候,无法显示,这里也直接在代码中控制。参考的是【安富莱原创】【STemWin教程】的教程。
         2)主图面ICON图标的源码转换
           双击BmpCvt.exe    并打开一个应用图标
                   点击菜单Image下的Scale
         
          设置图标大小 ,100*100根据自己界面需要。然后点击文件保存,选择 True color with alpha
         
      3)背景图的另一种显示方式,画BMP图像的方法,图片转换同样  双击BmpCvt.exe
          先选择格式,16位的565
            
         然后保存,选择高亮的条目
            
          以上准备工作做完,接下来是代码添加。
4,源码
           把ICON图标,背景图生成的C源码,放入GUIResource文件夹中,
          拷贝至:\stm32cubef4\STM32Cube_FW_F4_V1.10.0\Projects\STM32469I-Discovery\Applications\STemWin\STemWin_SampleDemo\GUIResource
  同时,工程中添加如下图
            
          把3.1中 UI设计窗生成的文件添加至下图:
               
         文件添加完,准备更改。
        1) 找到 main 函数      修改:
               //GUIDEMO_Main(); //注释原来的演示例程                CreateWindow();//添加创建窗体  此函数的外部声明自己添加
        2)添加在创建窗体的源文件中 WindowDLG.c
         建立ICON应用 图标资源
              /* ÓÃÓÚ×ÀÃæICONVIEWͼ±ê´´½¨ */
       typedef struct
      {
                   const GUI_BITMAP * pBitmap;
                   const char       * pText;
     } BITMAP_ITEM;

      /* ÓÃÓÚ×ÀÃæICONVIEWͼ±ê´´½¨ */
        static const BITMAP_ITEM _aBitmapItem1[] =
         {
                {&bmimage,    "image"},
                {&bmmusic,    "music"},
                 {&bmmovie,    "movie"},
                 {&bmphoto,    "camera"},
                 {&bmtext,    "text"},        
                 {&bmtool,    "tool"},
             };
       在窗体的消息回调中,添加背景图的显示
        static void _cbDialog(WM_MESSAGE * pMsg) {
  int NCode;
  int Id;
        
  // USER START (Optionally insert additional variables)
  // USER END

  switch (pMsg->MsgId) {
                case WM_PAINT:
                        //hItem = WM_GetDialogItem(pMsg->hWin, ID_IMAGE_0);
                        //pData = _GetImageById(ID_IMAGE_0_IMAGE_0, &FileSize);
                        //IMAGE_SetBMP(hItem, pData, FileSize);
                        GUI_DrawBitmap(&bmdesk,0,0);
                        break;
                case WM_NOTIFY_PARENT:
       创建ICONVIEW控件,及ICON应用 图标按钮
      在创建窗体的下一句添加。
hWinICON = ICONVIEW_CreateEx(100,                                 /* XÆðʼλÖÃ*/
                                                     100,                                         /* YÆðʼλÖÃ*/
                                                         420,                                    /* X¿í¶È*/
                                                         260,         /* YÖ¸¶È*/
                                 hWin,                                         /* ¸¸´°Ìå¾ä±ú */
                                                         WM_CF_SHOW | WM_CF_HASTRANS,       /* ´´½¨ºóÏÔʾ */
                                 0,//ICONVIEW_CF_AUTOSCROLLBAR_V,         
                                                         GUI_ID_ICONVIEW0,                                 /* ID */
                                                         100,                                     /* ICONͼ±ê¿í¶È */
                                                         100);/* ICONͼ±ê¸ß¶È */
        //hWinICON = WM_GetDialogItem(pMsg->hWin, GUI_ID_ICONVIEW0);
                        for (i = 0; i < GUI_COUNTOF(_aBitmapItem1); i++)
                        {        
                                ICONVIEW_AddBitmapItem(hWinICON, _aBitmapItem1.pBitmap, _aBitmapItem1.pText);
                        }

                        ICONVIEW_SetBkColor(hWinICON, ICONVIEW_CI_SEL, GUI_WHITE | 0x80000000);

                        ICONVIEW_SetFont(hWinICON, &GUI_Font20_1);
                        
                        /* ÉèÖÃICONͼƬµÄ¼ä¾à*/
                        ICONVIEW_SetSpace(hWinICON, GUI_COORD_X, 60);
                        ICONVIEW_SetSpace(hWinICON, GUI_COORD_Y, 60);

                        ICONVIEW_SetIconAlign(hWinICON, ICONVIEW_IA_HCENTER|ICONVIEW_IA_TOP);

       暂时没有实现ICON图标的响应,及相应的子界面,等后续更新,太晚太冷了。

       有兴趣的可以下载添加的必须代码。直接按之前给的位置添加进去就能运行。

GUIResource.rar

378.71 KB

main和窗体源码.rar

5.64 KB

沙发
exson_2006| | 2015-12-23 16:08 | 只看该作者
感谢分享

使用特权

评论回复
板凳
wjx1203020119| | 2015-12-23 19:26 | 只看该作者
多谢楼主的精彩分享,楼主辛苦了,

使用特权

评论回复
地板
xiajifehhz| | 2015-12-23 20:08 | 只看该作者
蛮漂亮的 学习了:lol

使用特权

评论回复
5
gejigeji521| | 2015-12-23 23:38 | 只看该作者
这个感觉和之前番茄花园搞那个Windows系统是一样一样的。

使用特权

评论回复
6
pingis58|  楼主 | 2015-12-24 08:36 | 只看该作者
gejigeji521 发表于 2015-12-23 23:38
这个感觉和之前番茄花园搞那个Windows系统是一样一样的。

功能上倒差很远,估计也就像个几年前流行的MP4.安富莱他们做了一个系统,还真像WIN7,但比WIN7更漂亮。

使用特权

评论回复
7
gejigeji521| | 2015-12-28 19:56 | 只看该作者
pingis58 发表于 2015-12-24 08:36
功能上倒差很远,估计也就像个几年前流行的MP4.安富莱他们做了一个系统,还真像WIN7,但比WIN7更漂亮。 ...

嗯,是在原系统基础上进行了图标的美化。

使用特权

评论回复
8
734774645| | 2015-12-28 22:47 | 只看该作者
有点意思,终于学会怎么换图标了

使用特权

评论回复
9
pingis58|  楼主 | 2015-12-29 08:30 | 只看该作者
734774645 发表于 2015-12-28 22:47
有点意思,终于学会怎么换图标了

谢谢关注,接下来会把SD卡加RTOS加进来,然后实现各种图片的解码显示,这是个开贴,上面的多媒体功能会全部实现。

使用特权

评论回复
10
734774645| | 2015-12-29 20:04 | 只看该作者
pingis58 发表于 2015-12-29 08:30
谢谢关注,接下来会把SD卡加RTOS加进来,然后实现各种图片的解码显示,这是个开贴,上面的多媒体功能会全 ...

我也持续关注该帖,希望跟楼主学点有用的本事,多媒体这个是跑系统必须玩的。

使用特权

评论回复
11
Serge_Ding| | 2015-12-29 20:24 | 只看该作者
感谢分享

使用特权

评论回复
12
lkl0305| | 2015-12-29 20:28 | 只看该作者
学习了

使用特权

评论回复
13
笑鸟007| | 2015-12-29 22:30 | 只看该作者
感谢分享!!!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

131

帖子

3

粉丝