搜索附件  
同能RPG制作大师 附件中心 同能RM技术讨论区 RPG Maker XP 讨论区 Bitmap模糊绘制blur_blt: 20220312-blur.zip

Bitmap模糊绘制blur_blt: 20220312-blur.zip

 

Bitmap模糊绘制blur_blt:
不知道有没有人写过?相当于把一张bitmap,模糊的绘制到目标bitmap上,虽然用了高斯分布的公式,但不是高斯模糊,只是糊了点

下图是sigma=2.0时的模糊,也可以下载范例尝试: ,按左右键调整模糊程度,确认键退出


RUBY 代码
  1. class Bitmap
  2.   def blur_blt(src_bitmap, sigma = 1.0)
  3.     blt(0, 0, src_bitmap, src_bitmap.rect)
  4.     returnif sigma < 0.01
  5.     d = 4
  6.     sum = 0.0
  7.     for dx in -d..d
  8.       for dy in -d..d
  9.         sum += Math.exp(-0.5 * (dx * dx + dy * dy) / (sigma * sigma))
  10.       end
  11.     end
  12.     for dx in -d..d
  13.       for dy in -d..d
  14.         alpha = Math.exp(-0.5 * (dx * dx + dy * dy) / (sigma * sigma)) * 255.0 / sum
  15.         nextif alpha < 1
  16.         blt(dx, dy, src_bitmap, src_bitmap.rect, alpha)
  17.       end
  18.     end
  19.   end
  20. end
复制代码

下面是测试代码:
RUBY 代码
  1. b = RPG::Cache.battleback("001-grassland01")
  2. s = Sprite.new
  3. s.bitmap = b.clone
  4. hint = Sprite.new
  5. hint.y = 440
  6. hint.bitmap = Bitmap.new(640, 32)
  7. refresh = Proc.new{ |sigma|
  8.   s.bitmap.clear
  9.   s.bitmap.blur_blt(b, sigma)
  10.   hint.bitmap.clear
  11.   hint.bitmap.draw_text(0, 0, 640, 32, "sigma = %.2f" % sigma, 1)
  12. }
  13. sigma = 1.0
  14. refresh.call(sigma)
  15. loopdo
  16.   Graphics.update
  17.   Input.update
  18.   exitif Input.trigger?(Input::C)
  19.   if Input.press?(Input::RIGHT)
  20.     sigma += 0.05
  21.     refresh.call(sigma)
  22.   elsif Input.press?(Input::LEFT) && sigma > 0
  23.     sigma -= 0.05
  24.     refresh.call(sigma)
  25.   end
  26. end
复制代码

             本帖来自P1论坛作者RPGzh500223,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=488959  若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
Loading...

QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

GMT+8, 2024-11-24 19:22 , Processed in 0.050025 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

返回顶部