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

Project1

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

[已经解决] 请问Bitmap类使用draw_text方法的时候为什么原点不在左上角

[复制链接]

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21484
在线时间
9389 小时
注册时间
2012-6-19
帖子
7114

开拓者短篇九导演组冠军

跳转到指定楼层
1
发表于 2014-7-31 20:43:36 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 喵呜喵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
复制代码

点评

果然【摊手  发表于 2014-8-1 12:24
当然不是那啥,这次是衣服穿的好好的条纹袜足控视角图里的萝莉  发表于 2014-8-1 00:11
这次头像比较猎奇,我都有点怀疑这是不是那啥了  发表于 2014-7-31 23:49

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

2
发表于 2014-7-31 20:50:16 | 只看该作者
本帖最后由 taroxd 于 2014-7-31 20:56 编辑

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

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

参考:在第8行前加入  rect.height = 24

评分

参与人数 2星屑 +140 梦石 +1 收起 理由
VIPArcher + 1 认可答案
喵呜喵5 + 140 认可答案,原来是高度的问题啊…….

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

百合控

梦石
0
星屑
6543
在线时间
1275 小时
注册时间
2013-8-21
帖子
3657

开拓者

3
发表于 2014-7-31 20:57:03 | 只看该作者
本帖最后由 余烬之中 于 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}

点评

我很喜欢这个方法  发表于 2014-8-1 20:01
好吧我在Ruby文档里看到了= =|||  发表于 2014-8-1 18:52
.tap方法是哪里来的(;´Д`)为什么F1里没有  发表于 2014-8-1 18:50

评分

参与人数 1星屑 +140 收起 理由
喵呜喵5 + 140 被这个纵向居中坑了……

查看全部评分

萌新瑟瑟发抖
看到我请叫我去干活
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
76
在线时间
1379 小时
注册时间
2012-7-5
帖子
1698

开拓者

4
发表于 2014-8-1 17:50:09 | 只看该作者
我只是来卖个萌..
  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)
复制代码

点评

啊为什么要用Button明明是定义在Label里的  发表于 2014-8-1 17:51

  -fk: -azogi:
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-9-25 19:17

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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