设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1309|回复: 0
打印 上一主题 下一主题

[rgss]自動換行描繪的簡單核心

[复制链接]

酱油的

梦石
0
星屑
970
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

跳转到指定楼层
1
发表于 2012-7-12 14:25:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 禾西 于 2012-7-12 14:27 编辑

RUBY 代码复制
  1. #==================================================================#
  2. # 自動換行 v1.00 by 禾西 on 2012.07.11
  3. #------------------------------------------------------------------#
  4. # * draw_lines(int x, int y, Bitmap bmp, String str, int max_char, int line_gap)
  5. #     x, y 開始描繪的左上角坐標
  6. #     bmp  需要描繪文字的位圖
  7. #     str  需要換行的文字
  8. #     max_char 一行最大的字符數
  9. #     line_gap 行與行之間的間距
  10. #==================================================================#
  11. #
  12. #調用方法
  13. #    sp = Sprite.new
  14. #    sp.bitmap = Bitmap.new(100,100)
  15. #    draw_lines(0, 0, sp.bitmap, "不賣萌不給幫助!液!", 5, 1)
  16. #
  17. #==================================================================#
  18. def draw_lines(x, y, bmp, str, max_char, line_gap)
  19.   # 利用 split 劃分字符。
  20.   # 這裡將假設:英語字符和漢字字符有同樣的寬度……
  21.   # ……盡管很多字體都不是這樣(漢字比英語寬得多)。
  22.   char_arr = str.split(//)
  23.   while char_arr.size > 0
  24.     str_buff = ""
  25.     n = 0
  26.     # 兩個循環:這一個 while 的作用是把一行的字符組合起來,
  27.     # 免掉計算每個字符的 x 值位置。
  28.     while (char_arr.size > 0 && n < max_char)
  29.       n += 1
  30.       str_buff += char_arr.shift
  31.     end
  32.     # 這個 while 的作用是描繪一行的字符,并計算下一行的 y 值。
  33.     rect = bmp.text_size(str)
  34.     rect.x = x
  35.     rect.y = y
  36.     bmp.draw_text(rect, str_buff)
  37.     # y 值 = 字體高度 + 間隔
  38.     # 這樣做回避了字體比行間隔更大的問題。
  39.     y += (rect.width + line_gap)
  40.   end
  41. end
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-25 23:31

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表