Project1
标题:
在窗口中描绘的icon能否进行缩放(已自问自答)
[打印本页]
作者:
纯属小虫
时间:
2023-5-4 18:49
标题:
在窗口中描绘的icon能否进行缩放(已自问自答)
本帖最后由 纯属小虫 于 2023-5-4 20:54 编辑
通常,窗口中描绘icon的方式如下
bitmap = RPG::Cache.icon(item.icon_name)
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
那么,有什么方法能够把 24*24 的icon,放大成 48*48 或者 72 * 72 呢?
emmmm......研究了一下别的脚本,成功自问自答了
Sprite真强大!
# 描绘图标
if @图标 != nil
@图标.dispose
end
@图标 = Sprite.new
@图标.bitmap = RPG::Cache.icon(item.icon_name)
@图标.zoom_x = 2
@图标.zoom_y = 2
@图标.x = self.x + x + 16 + (self.width-32) / @column_max / 2 - 24
@图标.y = self.y + y + 64
@图标.z = self.z + 4
然后重新定义窗口dispose,把 @图标.dispose 也带上,以同时释放。
当然,如果 @图标 是多个的话,就用数组的方式去做
最后释放的时候也需要
for i in @图标
i.dispose if i != nil
end
作者:
guoxiaomi
时间:
2023-5-5 20:01
最后那个应该是:
i.dispose if !i.disposed?
复制代码
,dispose掉的Sprite不会自动变成nil。
作者:
我为鱼肉
时间:
2023-5-6 13:48
本帖最后由 我为鱼肉 于 2023-5-6 13:58 编辑
如果没有其他特殊需求,可以使用
self.contents.stretch_blt(dest_rect, src_bitmap, src_rect[, opacity])描绘该图标
第一个参数是坐标及大小也就是拉伸成什么样
第二个参数图标bitmap
第三个参数图标的矩形
第四个参数透明度
这样就不需要单独生成精灵了
哪怕是描绘一个动态逐帧动画,也可以用这样的方法。
另外,我发现bitmap可以不必clear
只需把需要擦除的位置fill_rect一个透明块就行了,
这样一来就算你在bitmap上draw了非常多的text也不必担心卡顿。
精准擦除,精准描绘
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1