Project1

标题: 《游戏窗口居中怎么写》之答 [打印本页]

作者: SixRC    时间: 2015-8-3 00:55
标题: 《游戏窗口居中怎么写》之答
RUBY 代码复制
  1. module Extra
  2.   module_function
  3.   #---------------------游戏窗口居中-------------------------------#
  4.   Desktop_hwnd=Win32API.new("user32","GetDesktopWindow",'v','l').call
  5.   Win_hwnd=Win32API.new("user32","GetActiveWindow",'v','L').call
  6.   def Put_to_center()
  7.     size=' '*16
  8.     Win32API.new("user32","GetWindowRect",'lp','v').call(Desktop_hwnd,size)
  9.     size=size.unpack('l*')
  10.     size_x=size[2]*3/5
  11.     size_y=size[3]*4/5
  12.     size_l=size[2]*1/5
  13.     size_u=size[3]*1/11
  14.     Win32API.new("user32","MoveWindow",%(llllll),'l').call(Win_hwnd,size_l,size_u,size_x,size_y,1)
  15.   end
  16. end


随便插进去
调用是 Extra.Put_to_center
自己看脚本即可 不解释

@jiahui5592986  
作者: jiahui5592986    时间: 2015-8-5 09:46
如果是打开GAME.exe就让他居中呢[我知道默认就是居中的]
作者: SixRC    时间: 2015-8-5 11:16
jiahui5592986 发表于 2015-8-5 09:46
如果是打开GAME.exe就让他居中呢[我知道默认就是居中的]

我没懂你的意思 插在脚本里 不就是打开运行的吗
以及上面我的代码是有问题的 因为也改了分辨率 以及当时没考虑任务栏的长度 所以其实不应该这样写...
作者: jiahui5592986    时间: 2015-8-5 12:02
SixRC 发表于 2015-8-5 11:16
我没懂你的意思 插在脚本里 不就是打开运行的吗
以及上面我的代码是有问题的 因为也改了分辨率 以及当时 ...

如图,我是这样写的窗口位置.但是这样直接赋予X.Y值的话..在不同分辨率下面会不协调.您是什么解决哒?


作者: SixRC    时间: 2015-8-5 12:09
jiahui5592986 发表于 2015-8-5 12:02
如图,我是这样写的窗口位置.但是这样直接赋予X.Y值的话..在不同分辨率下面会不协调.您是什么解决哒?

...

获取桌面尺寸 然后计算一下
  1. SystemParametersinfo=Win32API.new("user32","SystemParametersInfo",'llpl','l')
  2.   size=' '*16
  3.   SystemParametersinfo.call(48,0,size,0)
  4.   size=size.unpack('l4')
复制代码
这样获取的尺寸是不含任务栏的
size[0]和size[1]是0
size[2]是x
size[3]是y
然后计算一下 留空多少就可以了
作者: jiahui5592986    时间: 2015-8-5 12:18
SixRC 发表于 2015-8-5 12:09
获取桌面尺寸 然后计算一下这样获取的尺寸是不含任务栏的
size[0]和size[1]是0
size[2]是x

so。我贴的那个图中,脚本要怎么写捏
作者: SixRC    时间: 2015-8-5 12:40
jiahui5592986 发表于 2015-8-5 12:18
so。我贴的那个图中,脚本要怎么写捏

知道了桌面尺寸之后 (size[2]-646)/2 作为位置x   (size[3]-512)/2作为位置y就好了
你的代码里640要改成646 因为左右还各有3像素的蓝边
480要改成512  因为上有29像素的标题栏 下面有3像素
作者: jiahui5592986    时间: 2015-8-5 18:12
SixRC 发表于 2015-8-5 12:40
知道了桌面尺寸之后 (size[2]-646)/2 作为位置x   (size[3]-512)/2作为位置y就好了
你的代码里640要改成6 ...

解决了,谢谢啦{:2_275:}




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1