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

Project1

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

[已经解决] 关于RMVA改变窗口大小的问题

[复制链接]

Lv2.观梦者

梦石
0
星屑
908
在线时间
212 小时
注册时间
2006-10-8
帖子
293
跳转到指定楼层
1
发表于 2014-10-29 15:53:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
这个是调整窗口大小的一段代码,我从整合系统里得来的,使用后进入游戏,窗口可成功修改,但是游戏窗口不居中,请问以下,要怎么样才可以改变尺寸并且在任意系统分辨率下居中呢??


RUBY 代码复制
  1. #给下面高度宽度赋值,就是分辨率的大小。
  2. 宽度=1280
  3. 高度=720
  4. 游戏ini名=".\\Game.ini"
  5. #============================================================================
  6. val = "\0"*256
  7. gps = Win32API.new('kernel32', 'GetPrivateProfileString',%w(p p p p l p), 'l')
  8. gps.call("Game", "Title", "", val, 256, 游戏ini名)
  9. title = val
  10. fw = Win32API.new('user32', 'FindWindow', %(p, p), 'i')
  11. hWnd = fw.call("RGSS Player", title)
  12. swp = Win32API.new('user32', 'SetWindowPos', %(l, l, i, i, i, i, i), 'i')
  13. ok = swp.call(hWnd, 0, 0, 0, 宽度, 高度, 2)

Lv4.逐梦者 (版主)

无限の剣制

梦石
0
星屑
10074
在线时间
5020 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

2
发表于 2014-10-29 19:21:45 | 只看该作者
你用这个脚本吧,按F5放大窗口
脚本来自 Sion叔的白菜组。(组群内部资源,加入可见[自由加入])
  1. # 按 F5 可以放大缩小窗口,存档记录玩家的偏好
  2. class << Input
  3.   alias_method :update_sion_zrscreen, :update
  4.   def update
  5.     Graphics.switch_room if trigger?(:F5)
  6.     update_sion_zrscreen
  7.   end
  8. end
  9. class << Graphics
  10.   FindWindowEx = Win32API.new('user32', 'FindWindowEx', 'llpp', 'i')
  11.   GetSysMtr    = Win32API.new('user32', 'GetSystemMetrics', 'i', 'i')
  12.   KeybdEvent   = Win32API.new('user32', 'keybd_event', 'iill', 'v')
  13.   SetWindowPos = Win32API.new('user32', 'SetWindowPos', 'liiiiip', 'i')
  14.   HWnd = FindWindowEx.call(0, 0, 'RGSS Player', 0)
  15.   #
  16.   def switch_room
  17.     zoom($game_system.zoom_rate == 2 ? 1 : 2)
  18.   end
  19.   def zoom(rate)
  20.     $game_system.zoom_rate = rate
  21.     __zoom__(width * rate, height * rate)
  22.   end
  23.   def reset
  24.     SetWindowPos.call(HWnd, 0, 0, 0, GetSysMtr.call(0), GetSysMtr.call(1), 0)
  25.   end
  26.   #
  27.   def full_screen
  28.     __toggle__ if GetSysMtr.call(0) > 640
  29.   end
  30.   def windowed
  31.     __toggle__ if GetSysMtr.call(0) < 640
  32.   end
  33. private
  34.   def __zoom__(w, h)
  35.     w += (GetSysMtr.call(5) + GetSysMtr.call(45)) * 2
  36.     h += (GetSysMtr.call(5) + GetSysMtr.call(45)) * 2 + GetSysMtr.call(4)
  37.     x = [0, GetSysMtr.call(0) - w].max / 2
  38.     y = [0, GetSysMtr.call(1) - h].max / 2
  39.     SetWindowPos.call(HWnd, 0, x, y, w, h, 0)
  40.   end
  41.   def __toggle__
  42.     KeybdEvent.call(0xA4, 0, 0, 0)
  43.     KeybdEvent.call(0x0D, 0, 0, 0)
  44.     KeybdEvent.call(0x0D, 0, 2, 0)
  45.     KeybdEvent.call(0xA4, 0, 2, 0)
  46.   end
  47. end

  48. class Game_System
  49.   attr_accessor :zoom_rate
  50.   alias_method :on_after_load_sion_zrscreen, :on_after_load
  51.   def on_after_load
  52.     Graphics.zoom(@zoom_rate || 1)
  53.     on_after_load_sion_zrscreen
  54.   end
  55. end
复制代码

评分

参与人数 1梦石 +1 收起 理由
taroxd + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
908
在线时间
212 小时
注册时间
2006-10-8
帖子
293
3
 楼主| 发表于 2014-10-30 16:32:30 | 只看该作者
VIPArcher 发表于 2014-10-29 19:21
你用这个脚本吧,按F5放大窗口
脚本来自 Sion叔的白菜组。(组群内部资源,加入可见[自由加入]) ...

谢谢你,可以直接弄成默认放大 吗?

点评

.............对不起,我不会。  发表于 2014-10-30 16:37
可以  发表于 2014-10-30 16:36
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

无限の剣制

梦石
0
星屑
10074
在线时间
5020 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

4
发表于 2014-10-30 16:46:41 | 只看该作者
Jousun 发表于 2014-10-30 16:32
谢谢你,可以直接弄成默认放大 吗?
  1. # 按 F5 可以放大缩小窗口,存档记录玩家的偏好
  2. class << Input
  3.   @@ok_room = true
  4.   alias_method :update_sion_zrscreen, :update
  5.   def update
  6.     Graphics.switch_room if @@ok_room || trigger?(:F5)
  7.     update_sion_zrscreen
  8.   end
  9. end
  10. class << Graphics
  11.   FindWindowEx = Win32API.new('user32', 'FindWindowEx', 'llpp', 'i')
  12.   GetSysMtr    = Win32API.new('user32', 'GetSystemMetrics', 'i', 'i')
  13.   KeybdEvent   = Win32API.new('user32', 'keybd_event', 'iill', 'v')
  14.   SetWindowPos = Win32API.new('user32', 'SetWindowPos', 'liiiiip', 'i')
  15.   HWnd = FindWindowEx.call(0, 0, 'RGSS Player', 0)
  16.   #
  17.   def switch_room
  18.     zoom($game_system.zoom_rate == 2 ? 1 : 2)
  19.     @@ok_room = nil
  20.   end
  21.   def zoom(rate)
  22.     $game_system.zoom_rate = rate
  23.     __zoom__(width * rate, height * rate)
  24.   end
  25.   def reset
  26.     SetWindowPos.call(HWnd, 0, 0, 0, GetSysMtr.call(0), GetSysMtr.call(1), 0)
  27.   end
  28.   #
  29.   def full_screen
  30.     __toggle__ if GetSysMtr.call(0) > 640
  31.   end
  32.   def windowed
  33.     __toggle__ if GetSysMtr.call(0) < 640
  34.   end
  35. private
  36.   def __zoom__(w, h)
  37.     w += (GetSysMtr.call(5) + GetSysMtr.call(45)) * 2
  38.     h += (GetSysMtr.call(5) + GetSysMtr.call(45)) * 2 + GetSysMtr.call(4)
  39.     x = [0, GetSysMtr.call(0) - w].max / 2
  40.     y = [0, GetSysMtr.call(1) - h].max / 2
  41.     SetWindowPos.call(HWnd, 0, x, y, w, h, 0)
  42.   end
  43.   def __toggle__
  44.     KeybdEvent.call(0xA4, 0, 0, 0)
  45.     KeybdEvent.call(0x0D, 0, 0, 0)
  46.     KeybdEvent.call(0x0D, 0, 2, 0)
  47.     KeybdEvent.call(0xA4, 0, 2, 0)
  48.   end
  49. end

  50. class Game_System
  51.   attr_accessor :zoom_rate
  52.   alias_method :on_after_load_sion_zrscreen, :on_after_load
  53.   def on_after_load
  54.     Graphics.zoom(@zoom_rate || 1)
  55.     on_after_load_sion_zrscreen
  56.   end
  57. end
复制代码
随意改的,未测试
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
908
在线时间
212 小时
注册时间
2006-10-8
帖子
293
5
 楼主| 发表于 2014-10-30 16:53:49 | 只看该作者
感谢楼上,我马上试试
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
908
在线时间
212 小时
注册时间
2006-10-8
帖子
293
6
 楼主| 发表于 2014-10-30 16:56:39 | 只看该作者
VIPArcher 发表于 2014-10-30 16:46
随意改的,未测试

再弱弱的请问一句,尺寸在哪里修改。。。。。。?

点评

万分感谢  发表于 2014-10-30 17:06
修改放大率。大概第18行  发表于 2014-10-30 17:04
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-14 23:23

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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