Project1

标题: 字体阴影脚本v2.0 [打印本页]

作者: 精灵使者    时间: 2017-10-14 10:48
标题: 字体阴影脚本v2.0
本帖最后由 精灵使者 于 2017-10-14 10:56 编辑

原版参考Sailcat大的字体阴影脚本。
精灵重写部分代码并改良设定部分。
主要更新有:
1.设定部分全部放在模块里进行设定。
2.增添了详细的说明书。
3.如果全局阴影的颜色和字体颜色一样【这往往很不美观】,会自动关闭阴影,等其他颜色的时候会自动恢复。

  1. #==============================================================================
  2. # 本脚本来自rpg.blue,使用和转载请保留此信息
  3. #==============================================================================
  4. #==============================================================================
  5. #字体阴影脚本v 2.0
  6. #原作:Sailcat
  7. #改进:精灵使者
  8. #==============================================================================
  9. =begin
  10. 全局阴影设定部分在模块中进行。
  11. 默认如果阴影颜色与字体脚本颜色一致的话会自动关闭阴影,不一致的时候阴影会恢复
  12. 阴影颜色和方向可以自定义。
  13. 使用如下方式自定义阴影和颜色:
  14. draw_text后面加两个参数,第一个是阴影的参数,第二个是阴影的自定义颜色。
  15. 这样的话这一段draw_text就会有自定义阴影效果。
  16. =end

  17. #设定部分
  18. module FAY_FONT_SHADOW
  19.   SHADOW_ALIGN = 0 #对齐方式
  20.   SHADOW_DIRECTION = 3 #字体对齐方向,如果默认为0则关闭全局阴影,需要自定义
  21.                        #具体定义数字参考小键盘,1左下3右下7左上9右上,默认是3
  22.   SHADOW_COLOR = Color.new(0,0,0) #阴影字体默认颜色,默认黑色
  23.   SHADOW_COLOR_ALPHA = 0.67 #阴影相对于字体的透明度,1为和透明度一致,默认0.67
  24.   SHADOW_DELTA = 1 #阴影相对于字体的偏移量,默认为1像素
  25. end

  26. #正式脚本
  27. class Bitmap
  28. unless $FONT_SHADOW_INIT #防止F12重新描绘,全局脚本只运行一次
  29.   alias sailcat_draw_text draw_text unless method_defined? :sailcat_draw_text
  30.   def draw_text(p1,p2,p3=FAY_FONT_SHADOW::SHADOW_ALIGN,
  31.     p4=FAY_FONT_SHADOW::SHADOW_DIRECTION,p5=nil,
  32.     p6=FAY_FONT_SHADOW::SHADOW_ALIGN,p7=FAY_FONT_SHADOW::SHADOW_DIRECTION,p8=nil)
  33.     case p1
  34.     when Numeric
  35.       x = p1
  36.       y = p2
  37.       width = p3
  38.       height = p4
  39.       text = p5
  40.       align = p6
  41.       shadow_direction = p7
  42.       shadow_color = p8
  43.       if shadow_color.nil?
  44.       shadow_color = Color.new(FAY_FONT_SHADOW::SHADOW_COLOR.red,
  45.       FAY_FONT_SHADOW::SHADOW_COLOR.green,FAY_FONT_SHADOW::SHADOW_COLOR.blue,
  46.       self.font.color.alpha * FAY_FONT_SHADOW::SHADOW_COLOR_ALPHA)
  47.       end
  48.     when Rect
  49.       x = p1.x
  50.       y = p1.y
  51.       width = p1.width
  52.       height = p1.height
  53.       text = p2
  54.       align = p3
  55.       shadow_direction = p4
  56.       shadow_color = p5
  57.       if shadow_color.nil?
  58.       shadow_color = Color.new(FAY_FONT_SHADOW::SHADOW_COLOR.red,
  59.       FAY_FONT_SHADOW::SHADOW_COLOR.green,FAY_FONT_SHADOW::SHADOW_COLOR.blue,
  60.       self.font.color.alpha * FAY_FONT_SHADOW::SHADOW_COLOR_ALPHA)
  61.       end
  62.     end
  63.     color_temp = self.font.color.clone
  64.     if shadow_direction != 0 and color_temp != FAY_FONT_SHADOW::SHADOW_COLOR
  65.       self.font.color = shadow_color
  66.       case shadow_direction
  67.       when 1 #左下
  68.         sailcat_draw_text(x-FAY_FONT_SHADOW::SHADOW_DELTA,
  69.         y+FAY_FONT_SHADOW::SHADOW_DELTA,width,height,text,align)
  70.       when 3 #右下
  71.         sailcat_draw_text(x+FAY_FONT_SHADOW::SHADOW_DELTA,
  72.         y+FAY_FONT_SHADOW::SHADOW_DELTA,width,height,text,align)
  73.       when 7 #左上
  74.         sailcat_draw_text(x-FAY_FONT_SHADOW::SHADOW_DELTA,
  75.         y-FAY_FONT_SHADOW::SHADOW_DELTA ,width,height,text,align)
  76.       when 9 #右上
  77.         sailcat_draw_text(x+FAY_FONT_SHADOW::SHADOW_DELTA,
  78.         y-FAY_FONT_SHADOW::SHADOW_DELTA,width,height,text,align)
  79.       end
  80.       self.font.color=color_temp
  81.     end
  82.   $FONT_SHADOW_INIT = true
  83.   sailcat_draw_text(x,y,width,height,text,align)
  84.   end
  85. end
  86. end
  87. #==============================================================================
  88. # 本脚本来自rpg.blue,使用和转载请保留此信息
  89. #==============================================================================
复制代码





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