赞 | 274 |
VIP | 0 |
好人卡 | 3 |
积分 | 496 |
经验 | 40966 |
最后登录 | 2024-9-22 |
在线时间 | 1920 小时 |
Lv5.捕梦者
- 梦石
- 10
- 星屑
- 39592
- 在线时间
- 1920 小时
- 注册时间
- 2010-11-14
- 帖子
- 3320
|
最近试着给工程加RGD,结果各种位图描绘都异常了,想知道原因与解决方案。为了方便观察,使用了位图边框着色脚本。(也就是在draw_text的同时fill_rect)
未使用RGD
使用RGD
绘制部分的代码
- def initialize_text_sprites
- viewport = Viewport.new(0, @font.size, Graphics.width, Graphics.height - @font.size) # 防止文字向上越界
- viewport.z = BASE_Z + 2 # 防止文字被被地图和黑块遮住
-
- @text_sprites = Array.new(@texts.size){ Sprite.new(viewport) } # 指定viewport
- @text_sprites.each_with_index do |sprite, i|
- # 矩形准备
- rect = Bitmap.text_size(@texts[i], @font)
- # 绘制位图
- sprite.bitmap = Bitmap.new(rect.width, rect.height)
- sprite.bitmap.font = @font
- sprite.bitmap.draw_text(rect, @texts[i])
- # 调整位置
- sprite.ox = sprite.bitmap.width / 2
- sprite.x = Graphics.width / 2 # 横向居中
- sprite.y = Graphics.height + rect.height * (1.1 * i - 1) # 1.1可以省略吗?
- end
- end
复制代码 其中Bitmap.text_size是
- def self.text_size(text, font = Font.new)
- bmp = BMP_FOR_TEXT_SIZE # Bitmap.new(1, 1)
- bmp.font = font
- rect = bmp.text_size(text) # 含边框与斜体调整
- rect
- end
复制代码
|
|