查看: 5762|回复: 8

[通用发布] 识别换行符的draw_text

[复制链接]
梦石
0
星屑
122
在线时间
552 小时
注册时间
2012-8-18
回帖
1392
发表于 2013-8-31 13:13:38 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 无脑之人 于 2013-10-12 21:59 编辑

简单的一个小功能而已,用在手动换行和自动换行上都很方便,有什么Bug请回复,谢谢合作
  1. class Bitmap
  2.   alias :draw_text2 :draw_text unless defined? :draw_text2
  3.   def draw_text(*args)
  4.     case  args.size
  5.     when 2
  6.       rect = args[0]
  7.       text = args[1].split("\n")
  8.       align = 0
  9.     when 3
  10.       rect = args[0]
  11.       text = args[1].split("\n")
  12.       align = args[2]%3
  13.     when 5
  14.       rect = Rect.new(*(args[0,4]))
  15.       text = args[4].split("\n")
  16.       align = 0
  17.     when 6
  18.       rect = Rect.new(*(args[0,4]))
  19.       text = args[4].split("\n")
  20.       align = args[5]%3
  21.     else
  22.       raise ArgumentError,"错误的参数个数(#{args.size} to 2,3,5,6)."
  23.     end
  24.     return if text.empty?
  25.     wmax = [text.map{|t| self.text_size(t).width}.max,rect.width].min
  26.     h = self.text_size(text[0]).height
  27.     hmax = [h*text.size,rect.height].min
  28.     y = rect.y+(rect.height-hmax)/2
  29.     x = align==0 ? rect.x : align==2 ? rect.x+rect.width-wmax : rect.x+(rect.width-wmax)/2
  30.     text.each_with_index{|t,i|
  31.       draw_text2(x,y+i*h,wmax,h,t,align)
  32.     }
  33.     self
  34.   end
  35. end
复制代码
2013-10-12 更新
  修复了进入物品界面报错的问题【问题原因:空字符串进行split返回空数组】
  修复了覆盖掉所在区域原图像的Bug

@cinderelmini @fzcrllsx @喵呜喵5 @诺亚之城 请及时更新,感谢使用

评分

参与人数 3星屑 +155 收起 理由
喵呜喵5 + 60 中国好脚本er
诺亚之城 + 45 感谢提醒
cinderelmini + 50 吃起来更不错~~

查看全部评分

我要填坑!我要背单词!我要学日语!我要每天锻炼!
好吧呵呵= =
梦石
0
星屑
1590
在线时间
21 小时
注册时间
2012-2-17
回帖
2
发表于 2013-10-1 17:39:41 | 显示全部楼层
感谢LZ
但是 使用之后第一行文字会被横向压缩

点评

一般情况下是阁下提供的矩形宽度不足= =试一试加宽一下吧  发表于 2013-10-1 17:57
会有这种事情吗= =麻烦提供一下效果截图和相关部分的代码  发表于 2013-10-1 17:55
回复

使用道具 举报

梦石
0
星屑
1590
在线时间
21 小时
注册时间
2012-2-17
回帖
2
发表于 2013-10-1 18:13:04 | 显示全部楼层
1.jpg
2.jpg
试了一下 不是第一行 而是最长的哪一行
如果只有一行 一样会被压缩

点评

刚才测试了一下,没有阁下所说的问题= =请检查阁下提供的矩形,是否小于该字符串的最大宽度  发表于 2013-10-1 18:54
回复

使用道具 举报

梦石
1
星屑
23236
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2013-10-12 15:40:43 | 显示全部楼层
?
QQ截图20131012154345.png

点评

请及时更新,感谢使用【话说怎么@不到你  发表于 2013-10-12 21:51
回复

使用道具 举报

梦石
0
星屑
122
在线时间
552 小时
注册时间
2012-8-18
回帖
1392
 楼主| 发表于 2013-10-12 17:36:02 来自手机 | 显示全部楼层
喵呜喵5 发表于 2013-10-12 15:40:43
?

@喵呜喵5 目测阁下的参数错了,Bitmap#draw_text的第五个参数应该是字符串,阁下填了0?(左对齐可以不用填0的……)
回复

使用道具 举报

梦石
0
星屑
9716
在线时间
2775 小时
注册时间
2008-9-5
回帖
3458

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

发表于 2013-10-12 17:46:13 | 显示全部楼层
看起来很实用~
抱走之~顺便验证LS几位的BUG~
回复

使用道具 举报

梦石
0
星屑
90
在线时间
1314 小时
注册时间
2011-4-28
回帖
1276

短篇八橙光组亚军贵宾

发表于 2013-10-12 18:03:05 | 显示全部楼层
本帖最后由 诺亚之城 于 2013-10-12 18:10 编辑

RMXP  物品菜单25行会报错,请问这是RMVA的吗?
完全可以正常使用,但不能进入物品栏。

点评

对不起在下是一个标准的F12黑,如果阁下执意要修改 在alias后面加上unless defined? :draw_text2  发表于 2013-10-12 19:09
感谢,另外按下键盘的F12也会报错直接退出,虽然这个对游戏进程不会造成影响。  发表于 2013-10-12 18:48
在23行的end下面键入下列代码:return if text.empty? 【主楼已更新】  发表于 2013-10-12 18:16
回复

使用道具 举报

梦石
0
星屑
1539
在线时间
729 小时
注册时间
2010-9-22
回帖
173
发表于 2014-12-3 22:56:43 | 显示全部楼层
我也遇到了同样的问题,这个要怎么用,直接复制进去就能用吗?
回复

使用道具 举报

梦石
0
星屑
50
在线时间
94 小时
注册时间
2016-10-21
回帖
32
发表于 2017-6-15 21:01:41 | 显示全部楼层
C:\Users\Administrator.WQ-20160501NYYU\Desktop
这是什么错误?
捕获.PNG
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部