if $myfirst == nil
$myfirst = 'myGod'
宽度=800
高度=600
游戏ini名=".\\Game.ini"
val = "\0"*256
gps = Win32API.new('kernel32', 'GetPrivateProfileString','pppplp', 'l')
gps.call("Game", "Title", "", val, 256, 游戏ini名)
val.delete!("\0")
title = val
fw = Win32API.new('user32', 'FindWindow', 'pp', 'i')
hWnd = fw.call("RGSS Player", title)
swp = Win32API.new('user32', 'SetWindowPos', 'lliiiii', 'i')
pointwds = [0,0,0,0].pack('llll')
pointcet = [0, 0].pack('ll')
wdsrect = Win32API.new('user32.dll', 'GetWindowRect', 'lp', 'l')
client_screen = Win32API.new("user32", "ClientToScreen", 'ip', 'i')
wdsrect.call(hWnd,pointwds)
client_screen.call(hWnd, pointcet)
wds = pointwds.unpack('llll')
cet = pointcet.unpack('ll')
addw = wds[2] - wds[0] - 640
addh = wds[3] - wds[1] - 480
x = wds[0] - (宽度 - 640) / 2
y = wds[1] - (高度 - 480) / 2
swp.call(hWnd, 0, x, y, 宽度 + addw, 高度 + addh, 0x20)
end
if $myfirst == nil
$myfirst = 'myGod'
宽度=800
高度=600
游戏ini名=".\\Game.ini"
val = "\0"*256
gps = Win32API.new('kernel32', 'GetPrivateProfileString','pppplp', 'l')
gps.call("Game", "Title", "", val, 256, 游戏ini名)
val.delete!("\0")
title = val
fw = Win32API.new('user32', 'FindWindow', 'pp', 'i')
hWnd = fw.call("RGSS Player", title)
swp = Win32API.new('user32', 'SetWindowPos', 'lliiiii', 'i')
pointwds = [0,0,0,0].pack('llll')
pointcet = [0, 0].pack('ll')
wdsrect = Win32API.new('user32.dll', 'GetWindowRect', 'lp', 'l')
client_screen = Win32API.new("user32", "ClientToScreen", 'ip', 'i')
wdsrect.call(hWnd,pointwds)
client_screen.call(hWnd, pointcet)
wds = pointwds.unpack('llll')
cet = pointcet.unpack('ll')
addw = wds[2] - wds[0] - 640
addh = wds[3] - wds[1] - 480
x = wds[0] - (宽度 - 640) / 2
y = wds[1] - (高度 - 480) / 2
swp.call(hWnd, 0, x, y, 宽度 + addw, 高度 + addh, 0x20)
end
以下引用暴动冲锋于2007-8-15 16:28:58的发言:
是不是直接把画面扯成高分辨率?
以下引用亿万星辰于2007-8-15 17:07:48的发言:
这个太好了,直接可以把分辨率弄大了....
找了一下,原来实现并不复杂,只是从来没想过这个问题竟然可以这样解决.......太神奇了....
[本贴由作者于 2007-8-15 17:19:06 最后编辑]
以下引用面粉于2007-8-15 23:18:16的发言:
目前试验结果如下 - -bbbbbb
以下引用亿万星辰于2007-8-15 17:07:48的发言:
这个太好了,直接可以把分辨率弄大了....
找了一下,原来实现并不复杂,只是从来没想过这个问题竟然可以这样解决.......太神奇了....
[本贴由作者于 2007-8-15 17:19:06 最后编辑]
以下引用minji于2007-8-15 22:37:04的发言:
AdjustWindowRectEx
以下引用面粉于2007-8-15 23:18:16的发言:
目前试验结果如下 - -bbbbbb
修改viewports和矩形坐标、范围后,战斗场景可以实现800*600
问题是地图类……仅仅修改Tilemap的关联视口范围会产生比较RP的问题……
只能显示部分640*480之外的地图元件。
怀疑是否需要接着修改Tilemap类中的一些方法,因为不能显示出来的大多是自动元件。
而Tilemap类在帮助内并没有给出……
头脑混乱了 @_@
以下引用BB崽于2007-8-16 8:20:09的发言:
这个东西研究了很久了~~
就是无法完美化~~~
美兽大大 不如 出两套套800X600和1024X78的默认系统
刷新以前是一个大问题,再就是速度
if $myfirst == nil
$myfirst = 'myGod'
宽度=800
高度=600
游戏ini名=".\\Game.ini"
val = "\0"*256
gps = Win32API.new('kernel32', 'GetPrivateProfileString','pppplp', 'l')
gps.call("Game", "Title", "", val, 256, 游戏ini名)
val.delete!("\0")
title = val
fw = Win32API.new('user32', 'FindWindow', 'pp', 'i')
hWnd = fw.call("RGSS Player", title)
swp = Win32API.new('user32', 'SetWindowPos', 'lliiiii', 'i')
pointwds = [0,0,0,0].pack('llll')
pointcet = [0, 0].pack('ll')
wdsrect = Win32API.new('user32.dll', 'GetWindowRect', 'lp', 'l')
client_screen = Win32API.new("user32", "ClientToScreen", 'ip', 'i')
wdsrect.call(hWnd,pointwds)
client_screen.call(hWnd, pointcet)
wds = pointwds.unpack('llll')
cet = pointcet.unpack('ll')
addw = wds[2] - wds[0] - 640
addh = wds[3] - wds[1] - 480
x = wds[0] - (宽度 - 640) / 2
y = wds[1] - (高度 - 480) / 2
swp.call(hWnd, 0, x, y, 宽度 + addw, 高度 + addh, 0x20)
end
以下引用纯子于2007-8-17 10:31:29的发言:
美兽大人~
改为800×600后怎么还原呢?
以下引用纯子于2007-8-17 10:31:29的发言:
美兽大人~
改为800×600后怎么还原呢?
以下引用纯子于2007-8-17 11:21:41的发言:
以下引用纯子于2007-8-17 10:31:29的发言:
美兽大人~
改为800×600后怎么还原呢?
补充一下,全屏后好像就失效了...
再返回就又变成640×480了
以下引用叶子于2008-7-19 6:38:13的发言:
有个问题想请教一下,顶起老贴先说句不好意思了
改大分辨率以后,关于渐变的操作(Graphics.freeze,Graphics.transition等)仍然只对原来的640x480范围有效,例如显示一张800x600的图,执行Graphics.freeze,把图关掉后再Graphics.transition,会发现640x480范围内正常渐变,范围外的内容则直接消失,显得非常突兀,不知道有没有解决办法?
有个问题想请教一下,顶起老贴先说句不好意思了
改大分辨率以后,关于渐变的操作(Graphics.freeze,Graphics.transition等)仍然只对原来的640x480范围有效,例如显示一张800x600的图,执行Graphics.freeze,把图关掉后再Graphics.transition,会发现640x480范围内正常渐变,范围外的内容则直接消失,显得非常突兀,不知道有没有解决办法?
def freeze
return if @@freezed
@@freezed = true
@@st = Sprite.new(@@vt)
@@st.bitmap = @@bt
end
以下引用灼眼的夏娜于2008-7-19 14:50:08的发言:
~~ = = 叶子自己重写那两方法= =
我不知道freeze和transion原来的代码,重写也没办法达到那种效果简单的透明度变化的渐变可以通过很多种途径实现,不过根据渐变图的渐变就不知道怎么做了
以下引用冰城飞狐于2008-9-13 22:19:33的发言:
那个……还有个问题……
怎么实现800*600窗口的全屏啊?
默认全屏是这样的:
本帖相关代码如下:
$keybd = Win32API.new 'user32.dll', 'keybd_event', ['i', 'i', 'l', 'l'], 'v'
$keybd.call 0xA4, 0, 0, 0
$keybd.call 13, 0, 0, 0
$keybd.call 13, 0, 2, 0
$keybd.call 0xA4, 0, 2, 0
[本贴由作者于 2008-9-13 22:21:29 最后编辑]
欢迎光临 Project1 (https://rpg.blue/) | Powered by Discuz! X3.1 |