| 
 
| 赞 | 15 |  
| VIP | 320 |  
| 好人卡 | 64 |  
| 积分 | 3 |  
| 经验 | 112963 |  
| 最后登录 | 2022-8-25 |  
| 在线时间 | 2355 小时 |  
 Lv2.观梦者 (暗夜天使) 
	梦石0 星屑266 在线时间2355 小时注册时间2009-3-13帖子2309 
 | 
| 本帖最后由 Sion 于 2013-10-11 20:54 编辑 
 直接绘制即可
 
   
 # 绘制色彩渐变v1.1 更新取消了脚本基需求,脑残了 - -b# 说明:文字中输入\u[颜色1,颜色2...] 就以渐变色绘制文字,结束渐变插入\u,大小写均可# 插入文本框测试例子:\u[0,18,9,8]这是渐变文字\u渐变结束class Window_BaseGRADUAL_SYM = 'U' #修改控制符,需大写。#-  alias_method :process_escape_character_NOgradual, :process_escape_character  def process_escape_character(code, text, pos)    code.upcase == GRADUAL_SYM ?      obtain_gradual_param(text, pos) :      process_escape_character_NOgradual(code, text, pos)  end  def obtain_gradual_param(text, pos)    text = text.slice!(/^\[.*]/)    if text      pos[:colors] = []      text.scan(/\d+/).each_with_index {|c, i| pos[:colors][i] = c.to_i}      return if pos[:colors].size >= 2    end    pos[:colors] = nil  end  #  alias_method :process_nomarl_character_NOgradual, :process_normal_character  def process_normal_character(c, pos)    pos[:colors] ?      process_nomarl_character_gradual(c, pos) :      process_nomarl_character_NOgradual(c, pos)  end  def process_nomarl_character_gradual(c, pos)    text_width = text_size(c).width    draw_text(pos[:x], pos[:y], text_width * 2, pos[:height], c)    colors = pos[:colors].collect {|c| text_color(c)}    csz = colors.size    uy = pos[:y]    l = (pos[:y] + pos[:height] - uy).fdiv(csz - 1)    for x in pos[:x]...(pos[:x] + text_width)      sy = uy      colors.each_with_index {|c1, i|        for y in sy.round...(sy + l).round          c = contents.get_pixel(x, y)          next if c.alpha == 0          r = (y - sy) / l          c2 = colors[i + 1]          c.red *= calc_gradual_rgb(r, c1.red, c2.red)          c.blue *= calc_gradual_rgb(r, c1.blue, c2.blue)          c.green *= calc_gradual_rgb(r, c1.green, c2.green)          contents.set_pixel(x, y, c)        end        break if i == csz - 2        sy += l      }    end    pos[:x] += text_width  end  def calc_gradual_rgb(r, v1,v2)    (v2 > v1 ? (r * (v2-v1) + v1) : ((1-r) * (v1-v2) + v2)) / 255  endend
# 绘制色彩渐变v1.1 更新取消了脚本基需求,脑残了 - -b 
# 说明:文字中输入\u[颜色1,颜色2...] 就以渐变色绘制文字,结束渐变插入\u,大小写均可 
# 插入文本框测试例子:\u[0,18,9,8]这是渐变文字\u渐变结束 
class Window_Base 
GRADUAL_SYM = 'U' #修改控制符,需大写。 
#- 
  alias_method :process_escape_character_NOgradual, :process_escape_character 
  def process_escape_character(code, text, pos) 
    code.upcase == GRADUAL_SYM ? 
      obtain_gradual_param(text, pos) : 
      process_escape_character_NOgradual(code, text, pos) 
  end 
  def obtain_gradual_param(text, pos) 
    text = text.slice!(/^\[.*]/) 
    if text 
      pos[:colors] = [] 
      text.scan(/\d+/).each_with_index {|c, i| pos[:colors][i] = c.to_i} 
      return if pos[:colors].size >= 2 
    end 
    pos[:colors] = nil 
  end 
  # 
  alias_method :process_nomarl_character_NOgradual, :process_normal_character 
  def process_normal_character(c, pos) 
    pos[:colors] ? 
      process_nomarl_character_gradual(c, pos) : 
      process_nomarl_character_NOgradual(c, pos) 
  end 
  def process_nomarl_character_gradual(c, pos) 
    text_width = text_size(c).width 
    draw_text(pos[:x], pos[:y], text_width * 2, pos[:height], c) 
    colors = pos[:colors].collect {|c| text_color(c)} 
    csz = colors.size 
    uy = pos[:y] 
    l = (pos[:y] + pos[:height] - uy).fdiv(csz - 1) 
    for x in pos[:x]...(pos[:x] + text_width) 
      sy = uy 
      colors.each_with_index {|c1, i| 
        for y in sy.round...(sy + l).round 
          c = contents.get_pixel(x, y) 
          next if c.alpha == 0 
          r = (y - sy) / l 
          c2 = colors[i + 1] 
          c.red *= calc_gradual_rgb(r, c1.red, c2.red) 
          c.blue *= calc_gradual_rgb(r, c1.blue, c2.blue) 
          c.green *= calc_gradual_rgb(r, c1.green, c2.green) 
          contents.set_pixel(x, y, c) 
        end 
        break if i == csz - 2 
        sy += l 
      } 
    end 
    pos[:x] += text_width 
  end 
  def calc_gradual_rgb(r, v1,v2) 
    (v2 > v1 ? (r * (v2-v1) + v1) : ((1-r) * (v1-v2) + v2)) / 255 
  end 
end 
@喵呜喵5 现在可以绘制多种颜色渐变。
 | 
 评分
查看全部评分
 |