Project1

标题: 请问Bitmap类使用draw_text方法的时候为什么原点不在左上角 [打印本页]

作者: 喵呜喵5    时间: 2014-7-31 20:43
标题: 请问Bitmap类使用draw_text方法的时候为什么原点不在左上角
本帖最后由 喵呜喵5 于 2014-7-31 20:46 编辑

这个是我的测试代码以及最终结果,Bitmap使用draw_text方法的时候为什么原点不在左上角?如何将原点设置到左上角?
  1. class Sprite_M5_Test < Sprite
  2.   def initialize
  3.     super(nil)
  4.     self.bitmap = Bitmap.new(Graphics.width,Graphics.height)
  5.     self.bitmap.fill_rect(self.bitmap.rect, Color.new(255,255,255))
  6.     self.z = 200
  7.     rect = self.bitmap.rect.clone
  8.     self.bitmap.draw_text(rect,text)
  9.   end
  10.   def dispose
  11.     self.bitmap.dispose if self.bitmap
  12.     super   
  13.   end
  14.   def text
  15.     "测试文字"
  16.   end
  17. end
  18. class Scene_Map  
  19.   alias m5_20140731_start start
  20.   def start
  21.     m5_20140731_start
  22.     @sprite_m5_test = Sprite_M5_Test.new
  23.   end
  24. # 未dispose
  25. end
复制代码

作者: taroxd    时间: 2014-7-31 20:50
本帖最后由 taroxd 于 2014-7-31 20:56 编辑

在一个方块里写一行字,当然是写在方块的中间最美观了……
如果不是这样的话,换个字体大小就能让窗口上的文字变得难看死,你信不信?
绘制文字确实是以左上角为原点,但是会绘制在指定矩形y轴的中央。

解决方式:像 Window_Base 里那样,显式指定文字的高度(line_height)即可

参考:在第8行前加入  rect.height = 24
作者: 余烬之中    时间: 2014-7-31 20:57
本帖最后由 余烬之中 于 2014-7-31 20:59 编辑

摘自F1手册
Horizontal text is left-aligned by default. Set align to 1 to center the text and to 2 to right-align it. Vertical text is always centered.
水平方向默认左对齐 竖直方向永远居中
所以…………用这个测试一下就清楚了
RUBY 代码复制
  1. def 合适高度
  2.   24
  3. end
  4.  
  5. x = Sprite.new.tap{|s|
  6.   s.bitmap = Bitmap.new(Graphics.width, Graphics.height).tap{|b|
  7.     b.fill_rect(b.rect, Color.new(255,255,255))
  8.     b.draw_text(b.rect.tap{|r| r.height = 合适高度}, "Tester Tester")
  9.   }
  10. }
  11. loop{Graphics.update}


作者: kuerlulu    时间: 2014-8-1 17:50
我只是来卖个萌..
  1. root = Root.new(0, 0, 640, 480)
  2. button = Button.new(root) do
  3.   text "哈哈哈", 1
  4.   oxy 120, 120
  5. end

  6. rgss_run(root)
复制代码





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1