硬汉嵌入式论坛

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

[emWin] 求助:emwin横竖屏切换的问题

[复制链接]

1

主题

3

回帖

6

积分

新手上路

积分
6
发表于 2017-10-10 11:28:45 | 显示全部楼层 |阅读模式
本人用stm32f407+ili9488(320*480)进行设计一个监护仪界面,平时是用竖屏显示(最大坐标x=320,y=480),在进行波形显示的时候要切换成横屏显示(最大坐标x=480,y=320),但横屏显示的时候发现x坐标只能显示到320,y坐标显示正常。
本想实现的效果如图:
1.竖屏界面,主界面320*480,点击此界面中的WAVE按钮进入波形显示界面,这时切换成横屏。
主界面.png

2,横屏波形显示本要实现的效果,480*320

WAVE界面

WAVE界面


3.而实际出来的效果确是这样的

实际效果

实际效果


横屏右边有部分并没有被绘出来,通过调试,x坐标最大只到319,感觉被限制了。
我在LCDConfig.c中的设置是:

#define XSIZE_PHYS  800
#define YSIZE_PHYS  480
#define VXSIZE_PHYS 800
#define VYSIZE_PHYS 480
#define LCD_CONTROLLER       8875
#define LCD_BITSPERPIXEL       16
#define LCD_USE_PARALLEL_16     0
我的主程序主要流程如下

1     LCD_SetDirection(3);                 /*设置竖屏显示*/
2     LCD_ClrScr(CL_BLACK);          /*全屏清黑*/   


3   GUI_Init();
4   WM_SetDesktopColor(GUI_WHITE);                                      /* Automacally update desktop window */
5    WM_SetCreateFlags(WM_CF_MEMDEV);                             /* Use memory devices on all windows to avoid flicker */
6    hDlg = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), &_cbCallback, 0, 0, 0);         /*创建主界面,竖屏*/
                                                                                                                            /*参数是: { FRAMEWIN_CreateIndirect,   NULL,  0,    0,  0,  320,480,FRAMEWIN_CF_MOVEABLE,0},*/
7   hWinMainWindow = hDlg;
8   hTimer = WM_CreateTimer(WM_GetClientWindow(hDlg), 0, 1000, 0);                                          /*创建定时器*/

    while(1){
        GUI_Delay(1000);
        Kye_Scna();        /*按键处理函数,发现WAVE被按下后会切换到横屏显示,然后创建一个横屏显示的对话框*/   
                                           /*横屏对话框的参数:{ FRAMEWIN_CreateIndirect,  "WAVE WINDOW", 2,  0,  0,  480,320,FRAMEWIN_CF_MOVEABLE,0},*/                                                                                                      
    }
通过调试,发现如果在调用 GUI_Init();函数之前,先切换到横屏显示(在1行处调用  LCD_SetDirection(1);),那么横屏显示是正常,但竖屏显示不正常。
如果屏蔽掉GUI_Init();,用自己实现的画线函数,在横屏显示下,从左上角画到右下角ILI9488_DrawLine(0,0,480,320),是可以实现的。给我的感觉是调用GUI_Init()函数时将x坐标和y坐标给限定了
请问哪位高手能否帮我解惑,不胜感激!


file:///C:UsersRDAppDataRoamingTencentUsers1473482744QQWinTempRichOleQBO]]F)VI)K~JRAC)1ZNKMG.png
回复

使用道具 举报

1

主题

3

回帖

6

积分

新手上路

积分
6
 楼主| 发表于 2017-10-10 11:37:45 | 显示全部楼层
不胜感激!
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115749
QQ
发表于 2017-10-10 11:39:18 | 显示全部楼层
切换方向后,得调用函数
LCD_SetSizeEx    (0,  g_LcdWidth,  g_LcdHeight);
LCD_SetVSizeEx   (0,  g_LcdWidth,  g_LcdHeight);   
重新设置显示区大小。


具体参考此例子,支持8848:http://www.armbbs.cn/forum.php?mod=viewthread&tid=9017
回复

使用道具 举报

1

主题

3

回帖

6

积分

新手上路

积分
6
 楼主| 发表于 2017-10-10 11:52:56 | 显示全部楼层
非常感谢,已经解决!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-16 03:30 , Processed in 0.238566 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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