查看: 3004|回复: 2

[原创发布] 在RMXP里面实现了gradient_fill_rect

[复制链接]
梦石
0
星屑
75
在线时间
241 小时
注册时间
2013-3-28
回帖
61
发表于 2015-5-19 19:12:10 | 显示全部楼层 |阅读模式

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

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

×
方法十分简陋,而且很难看
效率嘛……不要管它好了
[pre lang="ruby" line="1"]class Bitmap
  
  def gradient_fill_rect(*args)
    case args[0].size
    when 7
      x, y, width, height, color1, color2, vertical = args[0]
    when 6
      x, y, width, height, color1, color2, vertical = args[0] + [false]
    when 4
      rect, color1, color2, vertical = args[0]
    when 3
      rect, color1, color2 = args[0] + [false]
    end
    if rect != nil
      x, y, width, height = rect.x, rect.y, rect.width, rect.height
    end
    if !vertical
      for i in x..x+width
        color_r = ((color1.red-color2.red)*(i-x).to_f/width + color1.red)
        color_g = ((color1.green-color2.green)*(i-x).to_f/width + color1.green)
        color_b = ((color1.blue-color2.blue)*(i-x).to_f/width + color1.blue)
        color = Color.new(color_r, color_g, color_b)
        fill_rect(i, y, 1, height, color)
      end
    else
      for i in y..y+height
        color_r = ((color1.red-color2.red)*(i-y).to_f/height + color1.red)
        color_g = ((color1.green-color2.green)*(i-y).to_f/height + color1.green)
        color_b = ((color1.blue-color2.blue)*(i-y).to_f/height + color1.blue)
        color = Color.new(color_r, color_g, color_b)
        fill_rect(x, i, width, 1, color)
      end
    end
  end
  
end[/pre]
效果自己测试一下就知道了
还请大神们看看啊

评分

参与人数 1星屑 +100 收起 理由
恐惧剑刃 + 100 精品文章

查看全部评分

百合狂魔

梦石
31
星屑
10909
在线时间
3174 小时
注册时间
2011-12-16
回帖
1144

极短28获奖极短27获奖开拓者

发表于 2015-5-19 19:42:35 | 显示全部楼层
这是个啥
回复

使用道具 举报

梦石
0
星屑
75
在线时间
241 小时
注册时间
2013-3-28
回帖
61
 楼主| 发表于 2015-5-19 21:12:49 | 显示全部楼层
凝冰剑斩 发表于 2015-5-19 19:42
这是个啥

RGSS2的bitmap类里新增了一个gradient_fill_rect方法,可以用渐变色填充矩形,而RMXP所用的RGSS(1)没有这个方法。这个方法可以用来画血条之类的
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部