2013-03-17 48 views
-1

这是相当愚蠢的问题,但仍然..有没有办法使用Win API功能旋转屏幕?如何使用Win API函数旋转屏幕?

+2

是的,这是可能的 - 一切都可能与API – deepmax 2013-03-17 16:09:35

+0

你的意思是在90度的增量,对不对? – chris 2013-03-17 16:17:19

+0

@deepmax先生,这个问题是真正的问题,它为什么关闭? – 2017-02-13 12:29:51

回答

1

试试这个代码

DEVMODE dm; 
dm.dmSize=sizeof(DEVMODE); 
dm.dmDriverExtra=0; 
EnumDisplaySettings(NULL,ENUM_CURRENT_SETTINGS,&dm); 
dm.dmDisplayOrientation=DMDO_90; 
DWORD temp=dm.dmPelsHeight; 
dm.dmPelsHeight=dm.dmPelsWidth; 
dm.dmPelsWidth=temp; 

LONG ret; 
ret=ChangeDisplaySettings(&dm,0); 

返回值必须是ret == DISP_CHANGE_SUCCESSFUL。但是,如果一切正常,您应该看到结果。

-1

我怎么会做:

  1. 屏幕捕捉得到的图像。 (Possable)
  2. 然后根据需要旋转/变换图像。 (Possable)
  3. 用该图像绘制屏幕而不是图像窗口呈现。 (Possable,困难,并可能导致在步骤1中的问题)

编辑:这是假设你正在尝试用任意角度不neccisarraly涉及90度角工作。

+0

这个词是可能的。而且必然。另外,如何旋转屏幕图像?除非显示设备是方形的,否则不适合! – 2013-03-17 16:34:07

+0

对不起,学习C++不是英文。 :)一种方法是将其作为纹理插入到OpenGL中。否则,您将需要经过手工编写OpenGL。移动像素,用背景色填充空白区域,裁剪图像... – 2013-03-17 16:50:56

+1

如果屏幕是矩形的,旋转90度会给你一张不适合的图像。 – 2013-03-17 17:14:21