Project1

标题: 渐变字 [打印本页]

作者: kuerlulu    时间: 2016-1-27 13:10
标题: 渐变字
本帖最后由 kuerlulu 于 2016-1-27 13:22 编辑

因为搜了一下没搜到所以自己写了一个
# 因为没啥好说的所以用者自取,效率不要找我【
  1. class Bitmap
  2.   def gradient_draw_text x, y, w, h, str, align, color1, color2, v = false
  3.     buffer = Bitmap.new w, h
  4.     if v
  5.       x.upto x + w do |n|
  6.         r = color1.red    * (w - n + x) / w + color2.red   * (n - x) / w
  7.         g = color1.green  * (w - n + x) / w + color2.green * (n - x) / w
  8.         b = color1.blue   * (w - n + x) / w + color2.blue  * (n - x) / w
  9.         a = color1.alpha  * (w - n + x) / w + color2.alpha * (n - x) / w
  10.         buffer.clear
  11.         buffer.font.color = Color.new r, g, b, a
  12.         buffer.draw_text 0, 0, w, h, str, align
  13.         blt n, y, buffer, Rect.new(n - x, 0, 1, h)
  14.       end
  15.     else
  16.       y.upto y + h do |n|
  17.         r = color1.red    * (h - n + y) / h + color2.red    * (n - y) / h
  18.         g = color1.green  * (h - n + y) / h + color2.green  * (n - y) / h
  19.         b = color1.blue   * (h - n + y) / h + color2.blue   * (n - y) / h
  20.         a = color1.alpha  * (h - n + y) / h + color2.alpha  * (n - y) / h
  21.         buffer.clear
  22.         buffer.font.color = Color.new r, g, b, a
  23.         buffer.draw_text 0, 0, w, h, str, align
  24.         blt x, n, buffer, Rect.new(0, n - y, w, 1)
  25.       end
  26.     end
  27.     buffer.dispose
  28.     self
  29.   end
  30. end
复制代码
补一张截图(描边+模糊+渐变):
别叫我吃鱼了!
作者: 余烬之中    时间: 2016-1-27 13:29



喵喵喵



作者: SailCat    时间: 2016-1-27 13:36
反复的draw_text效率降低的很厉害……20pt的字要draw 32次




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