WINCE实现屏幕旋转的方法

1、S3C6410开发板上实现屏幕旋转(实现)

  i)修改 E:\WINCE600\PLATFORM\SMDK6410\SRC\DRIVERS\DISPLAY\DISPLAY_DRV\display_main.cpp中让

   line172:   m_iRotate = GetRotateModeFromReg();//从注册表读取Angle值

  ii)修改注册表 platform.reg

   line56:     [HKEY_LOCAL_MACHINE\System\GDI\Rotation]
             "Angle"=dword:0 ;5A,B4,10E

  iii)保存重新编译即可

 

2、驱动层上实现:winCE 4.2以上(未测)

一.修改

SMDK2440\DRIVERS\DISPLAY\S3C2440LCD 目录下的sources文件合适位置增加:

CLEARTYPE=0
ROTATE=1   //这句是我加的

二.s3c2440disp.h文件头上加一句

#define ROTATE

三.s3c2440disp.cpp中
S3C2440DISP::S3C2440DISP (void)
{

#ifdef ROTATE

//m_iRotate = GetRotateModeFromReg(); 原来的是通过GetRotateModeFromReg读取

//[HKEY_LOCAL_MACHINE\System\GDI\Rotation]  下的"Angle"值决定m_iRotate
m_iRotate = DMDO_90;

SetRotateParms();
#endif //ROTATE  

四.检查platform.reg中,

[HKEY_LOCAL_MACHINE\System\GDI\Drivers]
"Display"="s3c2440disp.dll"

以下注册表可以有可以没有。
[HKEY_LOCAL_MACHINE\System\GDI\Rotation]  
"ANGLE"=dword:5A   ;0x5A for 90,这是我加的   ,加在gdi\drivers这项后面

五,要在S3C2440DISP::S3C2440DISP (void) 最后加一句
((GPESurfRotate *)m_pPrimarySurface)->SetRotation(m_nScreenWidth, m_nScreenHeight, m_iRotate);

而s2440.h、2410中关于屏幕的东西不要去改,那是初试化lcd控制器的,与这里没有关系。

2、通过修改注册表做Rotation

默认情况下,屏幕都是正常显示的,也就是说翻转角度为0度。可以通过修改注册表来做屏幕翻转,通过修改”Angle”的值来完成,具体设置如下:

[HKEY_LOCAL_MACHINE\System\GDI\Rotation]

"Angle"=dword:5A ;翻转90度,罗嗦一句,5A就是90的十六进制

可以设置为0度,90度,180度和270度。也就是0,5A,B4和10E,通过设置这些值可以达到屏幕翻转的目的。你可以在Build image的时候就做这件事情,只要在project.reg文件里面加入上面的设置,然后重新make image,这样新的image启动以后就会按照你的设定来显示。也可以在WinCE启动以后,编个读写注册表的小程序,来修改这个值,然后重新启动就可以了(系统要支持HIVE-Based Registry)。

原文引自:http://jimmyloveforever.blog.163.com/blog/static/11977524720096183118993/

原文地址:https://www.cnblogs.com/xfdarm/p/1625651.html