赞 | 0 |
VIP | 40 |
好人卡 | 2 |
积分 | 1 |
经验 | 10932 |
最后登录 | 2016-5-17 |
在线时间 | 462 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 462 小时
- 注册时间
- 2007-7-30
- 帖子
- 643
|
本帖最后由 david50407 于 2011-1-10 23:52 编辑
Bitmap 位图
这次换我来给各位解说了 恩。
位图,简单来说就是图像,在画面上显示位图,必须使用精灵(Sprite 精灵类)之类的对象。
当然我们的图像是要能够有多种变化的,所以Bitmap类提供了两种生成的方式:- # 由文件载入并生成
- b = Bitmap.new(filename)
- # 生成新的位图
- b2 = Bitmap.new(width, height)
复制代码 喔,对了,生成位图之后是会保留在内存的,如果不需要的话要记得释放唷~- # 释放位图
- b.dispose
- # 侦测已释放位图与否 当位图已释放则返回 true
- b.disposed?
复制代码
说位图 MS 不大容易明白,把他想成是绘图板吧,所谓绘图板就是画画的地方,一个美好的园地(你扯过头了 喂!)
做为一个绘图板,就要具备绘图的功能(这不是废话吗?)。在这里,RGSS2 已经准备好了一些绘图的方法了:
1)绘制矩形 fill_rect- # 绘制矩形 将区域 (x, y, width, height) 填满指定颜色 color(Color 色彩类)
- b.fill_rect(x, y, width, height, color)
- # fill_rect 能吃 rect (Rect 矩形类) 的唷~
- b.fill_rect(rect, color)
复制代码 2)绘制渐层矩形 gradient_fill_rect- # 绘制渐层 将区域 (x, y, width, height) 填满从颜色 color1(Color 色彩类)至 color2(Color 色彩类)的渐层色彩
- b.gradient_fill_rect(x, y, width, height, color1, color2)
- # 能加上 vertical 来设置是否为纵向渐层 (true 为纵向)
- b.gradient_fill_rect(x, y, width, height, color1, color2, vertical)
- # 当然也吃 rect (Rect 矩形类) 噜~
- b.gradient_fill_rect(rect, color1, color2)
- b.gradient_fill_rect(rect, color1, color2, vertical)
复制代码 3)绘制文字来了~~ draw_text (此处理需要花费时间,因此不建议每画格重绘一次文字。)- # 绘制文字 在位图区域 (x, y, width, height) 或矩形 rect (Rect 矩形类) 中描绘字符串 str 。
- b.draw_text(x, y, width, height, str)
- # 能加上 align (0:靠左对齐,1:居中对齐,2:靠右对齐) 来指定对齐方式
- b.draw_text(x, y, width, height, str, align)
- # 惯例... 吃 rect (Rect 矩形类)
- draw_text(rect, str)
- draw_text(rect, str, align)
复制代码 text_size 则能获取绘制文字时所需的矩形大小(不包含斜体倾斜的文字部分)- # text_size 获取绘制文字 str (String 字符串) 所需矩形
- rect = b.text_size(str)
- # 合起来用就是
- b.draw_text(b.text_size(str), str)
- # 是不是方便多了呢?
复制代码 4)啊咧 涂错了怎办? clear 和 clear_rect 来帮你解决这个问题- # clear 清除整个位图
- b.clear
- # clear_rect 清除位图区域 (x, y, width, height) 或矩形rect (Rect 矩形类)
- b.clear_rect(x, y, width, height)
- b.claer_rect(rect)
复制代码
接下来是一些进阶应用:
1)绘制像素点 set_pixel- # 绘制像素点 设定指定像素点 (x, y) 的色彩 color(Color 色彩类)。
- b.set_pixel(x, y, color)
复制代码 2)有繪製當然有獲取像素點的顏色 get_pixel- # 获取指定像素点 (x, y) 的色彩(Color 色彩类)。
- b.get_pixel(x, y)
复制代码 3)不知道各位写报告的时候是不是也像我一样善用"拷贝 黏贴"呢?
拷贝位图 blt- # 拷贝位图 拷贝位图 src_bitmap 的矩形 src_rect 部分到指定的座标 (x, y)
- b.blt(x, y, src_bitmap, src_rect)
- # 能指定 opacity 透明度 (范围 0~255)
- b.blt(x, y, src_bitmap, src_rect, opacity)
复制代码 变形的拷贝 stretch_blt- # 变形的拷贝 拷贝位图 src_bitmap 的矩形 src_rect 部分到指定的矩形中 dest_rect (可能导致变形)
- b.stretch_blt(dest_rect, src_bitmap, src_rect)
- b.stretch_blt(dest_rect, src_bitmap, src_rect, opacity)
复制代码 4)模糊 blur- # 模糊 对位图执行模糊效果 此处理需要花费时间
- b.blur
复制代码 放射型模糊 radial_blur- # 放射型模糊
- # angle 指定 0~360 的角度,角度愈大,效果愈圆润
- # division 指定 2~100 的分界数,分界数愈大,效果愈平滑 此处理需要花费大量时间
- b.radial_blur(angle, division)
复制代码 5)色相变换 hue_change 此处理需要花费时间,另外色彩转换的误差,反复转换可能会导致色彩损失。- # 色相变换 在 360 度内变换位图的色相。
- b.hue_change(hue)
复制代码
再来又是些基本的东西了...- b.width #获取位图宽度
- b.height #获取位图高度
- b.rect # 获取位图矩形(Rect 矩形类)
- b.font # 指定或取得draw_text方法描绘字符串时所使用的字体。(Font 字型类)。
复制代码 虽然 Bitmap 看起来很复杂,却又是整个游戏中不可或缺的元素之一啊。
但是只要精熟这恼人的东西之后,就天不怕地不怕了唷~
(PS: 刚刚被 DZ 脑残到... 重新写 呜呜呜~~)
|
评分
-
查看全部评分
|