Project1

标题: 在RMXP里面实现了gradient_fill_rect [打印本页]

作者: 你欠抽吧    时间: 2015-5-19 19:12
标题: 在RMXP里面实现了gradient_fill_rect
方法十分简陋,而且很难看
效率嘛……不要管它好了
RUBY 代码复制
  1. class Bitmap
  2.  
  3.   def gradient_fill_rect(*args)
  4.     case args[0].size
  5.     when 7
  6.       x, y, width, height, color1, color2, vertical = args[0]
  7.     when 6
  8.       x, y, width, height, color1, color2, vertical = args[0] + [false]
  9.     when 4
  10.       rect, color1, color2, vertical = args[0]
  11.     when 3
  12.       rect, color1, color2 = args[0] + [false]
  13.     end
  14.     if rect != nil
  15.       x, y, width, height = rect.x, rect.y, rect.width, rect.height
  16.     end
  17.     if !vertical
  18.       for i in x..x+width
  19.         color_r = ((color1.red-color2.red)*(i-x).to_f/width + color1.red)
  20.         color_g = ((color1.green-color2.green)*(i-x).to_f/width + color1.green)
  21.         color_b = ((color1.blue-color2.blue)*(i-x).to_f/width + color1.blue)
  22.         color = Color.new(color_r, color_g, color_b)
  23.         fill_rect(i, y, 1, height, color)
  24.       end
  25.     else
  26.       for i in y..y+height
  27.         color_r = ((color1.red-color2.red)*(i-y).to_f/height + color1.red)
  28.         color_g = ((color1.green-color2.green)*(i-y).to_f/height + color1.green)
  29.         color_b = ((color1.blue-color2.blue)*(i-y).to_f/height + color1.blue)
  30.         color = Color.new(color_r, color_g, color_b)
  31.         fill_rect(x, i, width, 1, color)
  32.       end
  33.     end
  34.   end
  35.  
  36. end

效果自己测试一下就知道了
还请大神们看看啊
作者: 凝冰剑斩    时间: 2015-5-19 19:42
这是个啥
作者: 你欠抽吧    时间: 2015-5-19 21:12
凝冰剑斩 发表于 2015-5-19 19:42
这是个啥

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




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1