1:先说Screen.SetResolution问题。
这个所谓的调整并不是窗口大小而是视口大小,也就是摄像机的视口大小!尼玛被这个坑惨了。
想要真的实现全屏就要用到window API得到窗口然后修改这个是最稳当的。
2:window API
public Rect screenPosition;
[DllImport("user32.dll")]
static extern IntPtr SetWindowLong(IntPtr hwnd, int _nIndex, int dwNewLong);//设置窗口风格
[DllImport("user32.dll")]
static extern bool SetWindowPos(IntPtr hWnd, int hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);//设置位置
[DllImport("user32.dll")]
static extern IntPtr GetForegroundWindow();//得到窗口句柄
const uint SWP_SHOWWINDOW = 0x0040;
const int GWL_STYLE = -16;
const int WS_BORDER = 1;
const int WS_POPUP = 0x800000;
再C#使用中使用API很简单,向上面定义出来使用就行
IntPtr handle = GetForegroundWindow();//得到句柄过后
SetWindowLong(handle, GWL_STYLE, WS_POPUP);//主要设置风格
bool result = SetWindowPos(handle, 0, x, y, w, h, SWP_SHOWWINDOW);//设置窗口大小以及位置
就这么简单的就可以完成全屏,但是。这个获取的句柄是活跃状态的句柄。这个就会出现一个很坑的问题。如果你再启动程序之后
激活的是其他的窗口,本身窗口非激活的话,激活状态窗口会被修改。。
解决办法就是获取窗口的时候换个方法。。这个方法自行百度挺多的,就是通过 窗口名字获取句柄,然后其他的就像上面的一样就OK