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

Project1

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

[已经解决] 发现1个超超超超强大的放大脚本,它的算法有无可能改为邻近

[复制链接]

Lv2.观梦者

梦石
0
星屑
640
在线时间
888 小时
注册时间
2007-4-3
帖子
84
跳转到指定楼层
1
发表于 2012-3-25 12:06:46 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 仲秋启明 于 2012-3-27 16:22 编辑

它用的算法平滑边缘但是有些模糊
无法找到改变方法但判断改变不能或极难也请大胆告知

原画面


F5放大后的画面


希望的画面
  1. #==============================================================================
  2. # ★ RGSS3-Extension
  3. # LNX25_ゲーム画面倍率切替
  4. #  ゲーム中、F5 キーでゲーム画面の表示倍率を切り替えます。
  5. #
  6. #  version   : 1.00 (12/02/27)
  7. #  author    : ももまる
  8. #  reference : [url]http://peachround.blog.fc2.com/blog-entry-20.html[/url]
  9. #
  10. #==============================================================================

  11. module LNX25
  12.   #--------------------------------------------------------------------------
  13.   # ● 切替キー
  14.   #--------------------------------------------------------------------------
  15.   RESIZE_KEY = :F5 # 規定値: :F5
  16. end

  17. #==============================================================================
  18. # ■ LNXスクリプト導入情報
  19. #==============================================================================
  20. $lnx_include = {} if $lnx_include == nil
  21. $lnx_include[:lnx25] = 100 # version
  22. p "OK:LNX25_ウィンドウサイズ変更"

  23. #==============================================================================
  24. # ■ Graphics
  25. #==============================================================================
  26. module Graphics
  27.   @screen_zoom = 1
  28.   #--------------------------------------------------------------------------
  29.   # ● ゲーム画面の表示倍率取得
  30.   #--------------------------------------------------------------------------
  31.   def self.screen_zoom
  32.     @screen_zoom
  33.   end
  34.   #--------------------------------------------------------------------------
  35.   # ● ゲーム画面の表示倍率変更
  36.   #--------------------------------------------------------------------------
  37.   def self.screen_zoom=(rate)
  38.     self.rgssplayer_resize(rate)
  39.     @screen_zoom = rate
  40.   end
  41.   #--------------------------------------------------------------------------
  42.   # ● ウィンドウハンドルの取得(Win32API)
  43.   #--------------------------------------------------------------------------
  44.   def self.rgssplayer
  45.     Win32API.new("user32", "FindWindow", "pp", "i").call("RGSS Player", 0)
  46.   end
  47.   #--------------------------------------------------------------------------
  48.   # ● ウィンドウのリサイズ(Win32API)
  49.   #--------------------------------------------------------------------------
  50.   def self.rgssplayer_resize(rate)
  51.     move_w = Win32API.new("user32", "MoveWindow", "liiiil", "l")
  52.     get_sm = Win32API.new("user32", "GetSystemMetrics", "i", "i")
  53.     # サイズ計算
  54.     frame_w   = get_sm.call(7) * 2 # ウィンドウ枠(横方向)
  55.     frame_h   = get_sm.call(8) * 2 # ウィンドウ枠(縦方向)
  56.     caption_h = get_sm.call(4)     # タイトルバーの高さ
  57.     width  = self.width  * rate + frame_w
  58.     height = self.height * rate + frame_h + caption_h
  59.     x = (get_sm.call(0) - width ) / 2
  60.     y = (get_sm.call(1) - height) / 2
  61.     # ウィンドウ位置・サイズ変更(ウィンドウ, X, Y, 幅, 高さ, 更新フラグ)
  62.     move_w.call(self.rgssplayer, x, y, width, height, 1)
  63.   end
  64. end
  65. class << Graphics
  66.   #--------------------------------------------------------------------------
  67.   # ● フレーム更新
  68.   #--------------------------------------------------------------------------
  69.   alias :lnx25_update :update
  70.   def update
  71.     # 元のメソッドを呼ぶ
  72.     lnx25_update
  73.     # F5 キーが押されたらリサイズ
  74.     if Input.trigger?(LNX25::RESIZE_KEY)
  75.       self.screen_zoom = (self.screen_zoom == 1 ? 2 : 1)
  76.     end
  77.   end
  78. end
复制代码

点评

还以为是在原窗口大小上改……小小的激动了一下  发表于 2012-3-27 16:24
请把你要实现的效果说明清楚,谢谢  发表于 2012-3-26 15:47

Lv3.寻梦者

梦石
0
星屑
1611
在线时间
2205 小时
注册时间
2010-6-27
帖子
1299
2
发表于 2012-3-26 11:06:00 | 只看该作者
没看懂你什么意思……

于是我也广告下…
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
640
在线时间
888 小时
注册时间
2007-4-3
帖子
84
3
 楼主| 发表于 2012-3-26 14:43:52 | 只看该作者
pigsss 发表于 2012-3-26 11:06
没看懂你什么意思……

脚本复制进脚本编辑器按F5键画面放大1倍

点评

请把你要解决的问题说明清楚  发表于 2012-3-26 16:01
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
47 小时
注册时间
2010-11-22
帖子
5
4
发表于 2012-3-27 14:04:15 | 只看该作者
也不是多牛逼的。 里面调用了两个api函数,一个GetSystemMetrics获取窗口属性,一个MoveWindowMoveWindow改变窗口属性。可以看到百度百科里面的参数解释。
因为只是像素拉伸,所以理所当然会模糊的。
好比你玩全屏游戏,改分辨率的话低了会很模糊,一个道理。
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
640
在线时间
888 小时
注册时间
2007-4-3
帖子
84
5
 楼主| 发表于 2012-3-27 16:15:22 | 只看该作者
本帖最后由 xyzgwx 于 2012-3-27 16:16 编辑

@小by兔
但是,使用ACDSee14等软件放大图片时,只要不使用三角、b-spline之类图片就不会模糊

我就想问这脚本有没有办法用邻近插值(近邻取样法)放大画面
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
47 小时
注册时间
2010-11-22
帖子
5
6
发表于 2012-3-27 21:43:08 | 只看该作者
那些软件可能会有处理,那种运算量非常大,而且画质肯定不能还原成原画,如果游戏用那个的话,目前显卡还不够。
要是我们真的能做出那个东西而且运算极快的话,那么你可以得奖了···
你给的脚本其实就是用api函数处理了一下,基本没有对图像的运算处理
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-5 16:18

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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