加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 禾西 于 2012-7-12 14:27 编辑
#==================================================================# # 自動換行 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
|