#==================================================================#
# 自動換行 v1.00 by 禾西 on 2012.07.11
#------------------------------------------------------------------#
# * draw_lines(int x, int y, Bitmap bmp, String str, int max_char, int line_gap)
# x, y 開始描繪的左上角坐標
# bmp 需要描繪文字的位圖
# str 需要換行的文字
# max_char 一行最大的字符數
# line_gap 行與行之間的間距
#==================================================================#
#
#調用方法
# sp = Sprite.new
# sp.bitmap = Bitmap.new(100,100)
# draw_lines(0, 0, sp.bitmap, "不賣萌不給幫助!液!", 5, 1)
#
#==================================================================#
def draw_lines(x, y, bmp, str, max_char, line_gap)
# 利用 split 劃分字符。
# 這裡將假設:英語字符和漢字字符有同樣的寬度……
# ……盡管很多字體都不是這樣(漢字比英語寬得多)。
char_arr = str.split(//)
while char_arr.size > 0
str_buff = ""
n = 0
# 兩個循環:這一個 while 的作用是把一行的字符組合起來,
# 免掉計算每個字符的 x 值位置。
while (char_arr.size > 0 && n < max_char)
n += 1
str_buff += char_arr.shift
end
# 這個 while 的作用是描繪一行的字符,并計算下一行的 y 值。
rect = bmp.text_size(str)
rect.x = x
rect.y = y
bmp.draw_text(rect, str_buff)
# y 值 = 字體高度 + 間隔
# 這樣做回避了字體比行間隔更大的問題。
y += (rect.width + line_gap)
end
end
#==================================================================#
# 自動換行 v1.00 by 禾西 on 2012.07.11
#------------------------------------------------------------------#
# * draw_lines(int x, int y, Bitmap bmp, String str, int max_char, int line_gap)
# x, y 開始描繪的左上角坐標
# bmp 需要描繪文字的位圖
# str 需要換行的文字
# max_char 一行最大的字符數
# line_gap 行與行之間的間距
#==================================================================#
#
#調用方法
# sp = Sprite.new
# sp.bitmap = Bitmap.new(100,100)
# draw_lines(0, 0, sp.bitmap, "不賣萌不給幫助!液!", 5, 1)
#
#==================================================================#
def draw_lines(x, y, bmp, str, max_char, line_gap)
# 利用 split 劃分字符。
# 這裡將假設:英語字符和漢字字符有同樣的寬度……
# ……盡管很多字體都不是這樣(漢字比英語寬得多)。
char_arr = str.split(//)
while char_arr.size > 0
str_buff = ""
n = 0
# 兩個循環:這一個 while 的作用是把一行的字符組合起來,
# 免掉計算每個字符的 x 值位置。
while (char_arr.size > 0 && n < max_char)
n += 1
str_buff += char_arr.shift
end
# 這個 while 的作用是描繪一行的字符,并計算下一行的 y 值。
rect = bmp.text_size(str)
rect.x = x
rect.y = y
bmp.draw_text(rect, str_buff)
# y 值 = 字體高度 + 間隔
# 這樣做回避了字體比行間隔更大的問題。
y += (rect.width + line_gap)
end
end