设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2655|回复: 7
打印 上一主题 下一主题

[原创发布] 《游戏窗口居中怎么写》之答

[复制链接]

Lv4.逐梦者

梦石
0
星屑
13559
在线时间
2753 小时
注册时间
2014-10-4
帖子
756

R考场第七期纪念奖

跳转到指定楼层
1
发表于 2015-8-3 00:55:26 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
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  

Lv3.寻梦者

梦石
0
星屑
1546
在线时间
625 小时
注册时间
2010-8-5
帖子
451
2
发表于 2015-8-5 09:46:43 | 只看该作者
如果是打开GAME.exe就让他居中呢[我知道默认就是居中的]
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
13559
在线时间
2753 小时
注册时间
2014-10-4
帖子
756

R考场第七期纪念奖

3
 楼主| 发表于 2015-8-5 11:16:40 | 只看该作者
jiahui5592986 发表于 2015-8-5 09:46
如果是打开GAME.exe就让他居中呢[我知道默认就是居中的]

我没懂你的意思 插在脚本里 不就是打开运行的吗
以及上面我的代码是有问题的 因为也改了分辨率 以及当时没考虑任务栏的长度 所以其实不应该这样写...
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1546
在线时间
625 小时
注册时间
2010-8-5
帖子
451
4
发表于 2015-8-5 12:02:36 | 只看该作者
SixRC 发表于 2015-8-5 11:16
我没懂你的意思 插在脚本里 不就是打开运行的吗
以及上面我的代码是有问题的 因为也改了分辨率 以及当时 ...

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

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
13559
在线时间
2753 小时
注册时间
2014-10-4
帖子
756

R考场第七期纪念奖

5
 楼主| 发表于 2015-8-5 12:09:39 | 只看该作者
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
然后计算一下 留空多少就可以了
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1546
在线时间
625 小时
注册时间
2010-8-5
帖子
451
6
发表于 2015-8-5 12:18:00 | 只看该作者
SixRC 发表于 2015-8-5 12:09
获取桌面尺寸 然后计算一下这样获取的尺寸是不含任务栏的
size[0]和size[1]是0
size[2]是x

so。我贴的那个图中,脚本要怎么写捏
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
13559
在线时间
2753 小时
注册时间
2014-10-4
帖子
756

R考场第七期纪念奖

7
 楼主| 发表于 2015-8-5 12:40:20 | 只看该作者
jiahui5592986 发表于 2015-8-5 12:18
so。我贴的那个图中,脚本要怎么写捏

知道了桌面尺寸之后 (size[2]-646)/2 作为位置x   (size[3]-512)/2作为位置y就好了
你的代码里640要改成646 因为左右还各有3像素的蓝边
480要改成512  因为上有29像素的标题栏 下面有3像素
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1546
在线时间
625 小时
注册时间
2010-8-5
帖子
451
8
发表于 2015-8-5 18:12:09 | 只看该作者
SixRC 发表于 2015-8-5 12:40
知道了桌面尺寸之后 (size[2]-646)/2 作为位置x   (size[3]-512)/2作为位置y就好了
你的代码里640要改成6 ...

解决了,谢谢啦{:2_275:}
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-28 13:00

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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