设为首页 收藏本站
登录 /立即注册 /找回密码

URPGs

快捷导航
  • 门户Portal
  • 论坛BBS
  • 群组Group
  • 导读Guide
  • 家园Space
  • 工具Tools
  • 广播Follow
  • 期刊Periodical
  • 排行榜Ranklist
  • 社区茶坊
  • pixlr图片编辑
  • 资源列表
  • photobucket
  • RMVA Lite [In English]
  • RM RTP
  • TryRUBY
  • RMXP+RMVX下载[VeryCD]
  • RMVA下载[66RPG]
搜索
  • 本版
  • 帖子
  • 用户
URPGs»论坛 › 技术讨论 › 技术讨论 › 分享一种位图画圆角矩形和普通矩形的方法 ...
返回列表 发新帖
查看: 3891|回复: 1

[RMVA 技术讨论] 分享一种位图画圆角矩形和普通矩形的方法

[复制链接]
Ruby200
Ruby200 当前离线
积分
3
查看详细资料 窥视卡 雷达卡
发表于 2013-11-10 02:02:51 | 显示全部楼层 |阅读模式
本帖最后由 Ruby200 于 2013-11-10 12:41 编辑



用法,
bitmap.draw_round_box 左上角x, 左上角y, 右下角x, 右下角y, 颜色, [作为左上角的圆角模型数组,可以省略(见代码中的那个缺省参数)]
如果最后一个参数填[],那么就是普通矩形
关于set_pixel可能太慢的问题。。在这里应该不影响太多,毕竟满打满算一般也就是640*2+480*2不算很大。而且如果用VA其实很快。
[code=ruby]
class Bitmap
  def draw_round_box(x1, y1, x2, y2, color, pattern = [
      "  ...",  #空格是不画,非空格字符都是要画点的
      " ..  ",  #可以用半角空格' '或者全角空格  ' ',如果不确定是哪个就复制前面引号里的
      "..   ",
      ".    ",
      ".    ",
    ]
    )
    yd = pattern.size
    xd = (pattern[0] || "").size
    w = x2 - x1 - 2*xd
    h = y2 - y1 - 2*yd
    fill_rect(x1+xd, y1, w, 1, color)
    fill_rect(x1, y1+yd, 1, h, color)
    fill_rect(x2 - 1, y1+yd, 1, h, color)
    fill_rect(x1+xd, y2 - 1, w, 1, color)
    xd.times{|ox|
      yd.times{|oy|
       if (pattern[oy][ox..-1].index(' ')!=0 && pattern[oy][ox..-1].index(' ')!=0)  #这一行修正为XPVXVA通用。。感谢P叔
          set_pixel(x1+ox, y1+oy, color)
          set_pixel(x2-ox-1, y1+oy, color)
          set_pixel(x2-ox-1, y2-oy-1, color)
          set_pixel(x1+ox, y2-oy-1, color)
        end
      }
    }
  end
end
[/code]
测试用脚本:Main之前任意位置
[code=ruby]   x = Sprite.new
    x.bitmap = Bitmap.new(300, 300)
    x.bitmap.draw_round_box(0, 0, 299, 299, Color.new(255, 0, 0, 255))
    [Graphics.update, Input.update, x.update] until false[/code]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

评分

参与人数 1银币 +50 收起 理由
Sonic1997 + 50 点个赞.w.

查看全部评分

回复

使用道具 举报

  • 提升卡
  • 置顶卡
  • 沉默卡
  • 喧嚣卡
  • 变色卡
  • 抢沙发
  • 千斤顶
  • 显身卡
Sonic1997
Sonic1997 当前离线
积分
212
查看详细资料 窥视卡 雷达卡
发表于 2013-11-10 06:50:29 | 显示全部楼层
[code=ruby]pattern = [
      "我是圆角!空格是不画,非空格字符都是要画兰兰兰兰兰兰兰兰兰兰兰兰兰",
      "兰兰兰兰 兰兰兰兰兰兰兰 兰兰兰兰兰兰 兰兰兰兰兰兰兰 兰兰兰兰兰",
      "兰兰兰兰兰 兰兰兰兰兰兰 兰兰兰兰兰兰 兰兰兰兰兰兰兰 兰兰兰兰兰",
      "兰兰兰兰兰兰 兰兰兰兰 兰兰兰兰兰兰    兰兰兰兰兰 兰兰兰兰兰",
      "兰兰兰兰兰兰 兰兰兰 兰兰兰兰兰兰兰 兰兰 兰兰       兰兰",
      "兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰 兰兰 兰兰兰 兰兰 兰兰 兰兰",
      "兰兰             兰兰兰     兰 兰兰 兰兰 兰兰",
      "兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰 兰 兰 兰 兰兰 兰兰 兰兰",
      "兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰 兰 兰 兰 兰兰 兰兰 兰兰",
      "兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰     兰       兰兰",
      "兰兰兰           兰兰兰兰 兰 兰 兰 兰兰 兰兰 兰兰",
      "兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰 兰 兰 兰兰兰兰 兰兰兰兰兰",
      "兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰     兰兰兰兰 兰 兰兰兰",
      "兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰 兰 兰 兰兰兰兰 兰兰 兰兰",
      "兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰 兰 兰          兰",
      "兰兰             兰兰兰 兰 兰 兰 兰兰兰兰兰兰 兰",
      "兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰 兰兰兰  兰兰兰兰兰兰兰兰兰兰",
      "兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰兰的",
    ][/code]

点评

orzfly
兰触……  发表于 2013-11-10 11:59
回复 Like Dislike

使用道具 举报

  • 显身卡
返回列表 发新帖
高级模式
B Color Image Link Quote Code Smilies
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|意见反馈[feedback]| URPGs RPG Maker 游戏制作讨论

GMT+8, 2025-5-9 15:24 , Processed in 0.025015 second(s), 7 queries .

Powered by Discuz! X3.5

© 2011-2019 URPGs (Discuz! X3.4 © 2001-2019 Comsenz Inc.)

积分 0, 距离下一级还需 积分
快速回复 返回顶部 返回列表