花潮论坛

搜索
热搜: 活动 交友 discuz
查看: 199|回复: 61

svg教程·画矩形

[复制链接]
  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3049

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

    发表于 2024-11-3 07:56 | 显示全部楼层 |阅读模式

    请马上登录,朋友们都在花潮里等着你哦:)

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

    x
    本帖最后由 马黑黑 于 2024-11-3 08:00 编辑

    画矩形

    指令:rect()

    参数:x, y, width, height, fill, stroke, stroke-width, rx, ry

    语法:rect(x, y, width, height, fill, stroke, stroke-width, rx, ry)

    其中:

    ① x - 矩形左上角X坐标值,数值
    ② y - 矩形左上角Y坐标值,数值
    ③ width - 矩形宽度值,数值
    ④ height - 矩形高度值,数值
    ⑤ fill - 填充色,颜色值(字符型)
    ⑥ stroke - 描边色,颜色值(字符型)
    ⑦ stroke-width - 描边线厚度,数值
    ⑧ rx - 矩形水平方向圆角半径,数值
    ⑨ ry - 矩形垂直方向圆角半径,数值
    *   数值可以不用引号,字符型需要使用引号,百分比视为字符型

    矩形常规参数(即SVG矩形标签属性)较多,实际绘制时至少需要前四个属性,这将得到一个黑色填充的矩形(下方演示的第一个矩形即是)。SVG矩形可以拥有圆角半径属性,分为X方向和Y方向方向两个半径,分别记作 rx、ry。这两个半径只设一个时,另一个缺省值与之相等,当任意一个设置为0时,另一个的设置无效;圆角半径的值为纯数字时视为使用px做单位,支持百分比,在 svgdr 百分比需要使用引号。看看svgdr绘制矩形的几种方法:

    绘制代码:

    sc.onload = () => {
    	var dr = _dr(msvg); //声明画笔
    	//开始绘制
    	dr.rect(20, 20, 160, 60);
    	dr.rect(20, 120, 160, 60, 'cornflowerblue');
    	dr.rect(20, 220, 160, 60, 'cornflowerblue', 'indigo');
    	dr.rect(20, 320, 160, 60, 'cornflowerblue', 'indigo', 4);
    	dr.rect(220, 20, 160, 60, 'cornflowerblue', 'indigo', 4, 8);
    	dr.rect(220, 120, 160, 60, 'cornflowerblue', 'indigo', 4, 8, 16);
    	dr.rect(220, 220, 160, 60, 'none', 'indigo');
    	dr.rect(220, 320, 160, 60, 'none', 'indigo', 4);
    	dr.rect(420, 20, 160, 60, 'none', 'indigo', 4, 8);
    	dr.rect(420, 120, 160, 60, 'none', 'indigo', 4, 8, 16);
    	//下面使用其他指令以追加方式继续绘制
    	dr.rect(420, 220, 160, 60, 'forestgreen').rx(16);
    	dr.rect(420, 320, 160, 60, 'forestgreen').rx(16).ry(32);
    	dr.rect(620, 20, 160, 160, 'forestgreen').rx('50%');
    	dr.rect(620, 220, 160, 160, 'forestgreen').ry('50%').stroke('indigo', 6);
    };
    
    	

    上面绘制指令生成的SVG代码如下:

    本节示例svgdr画矩形的完整代码:

    <svg id="msvg" width="800" height="400"></svg>
    
    <script>
    var sc = document.createElement('script');
    sc.src = 'https://638183.freep.cn/638183/web/js/svgdr.js';
    document.body.appendChild(sc);
    
    sc.onload = () => {
    var dr = _dr(msvg);
    	dr.rect(20, 20, 160, 60);
    	dr.rect(20, 120, 160, 60, 'cornflowerblue');
    	dr.rect(20, 220, 160, 60, 'cornflowerblue', 'indigo');
    	dr.rect(20, 320, 160, 60, 'cornflowerblue', 'indigo', 4);
    	dr.rect(220, 20, 160, 60, 'cornflowerblue', 'indigo', 4, 8);
    	dr.rect(220, 120, 160, 60, 'cornflowerblue', 'indigo', 4, 8, 16);
    	dr.rect(220, 220, 160, 60, 'none', 'indigo');
    	dr.rect(220, 320, 160, 60, 'none', 'indigo', 4);
    	dr.rect(420, 20, 160, 60, 'none', 'indigo', 4, 8);
    	dr.rect(420, 120, 160, 60, 'none', 'indigo', 4, 8, 16);
    	dr.rect(420, 220, 160, 60, 'forestgreen').rx(16);
    	dr.rect(420, 320, 160, 60, 'forestgreen').rx(16).ry(32);
    	dr.rect(620, 20, 160, 160, 'forestgreen').rx('50%');
    	dr.rect(620, 220, 160, 160, 'forestgreen').ry('50%').stroke('indigo', 6);
    };
    </script>
    	

    完整代码可以存为本地 .html 文档并使用浏览器打开,或将代码拿到 pencil code 运行。

    返回目录

    评分

    参与人数 3威望 +110 金钱 +220 经验 +110 收起 理由
    花飞飞 + 30 + 60 + 30 很给力!
    红影 + 50 + 100 + 50 赞一个!
    梦江南 + 30 + 60 + 30 很给力!

    查看全部评分

  • TA的每日心情
    开心
    2025-12-14 08:25
  • 签到天数: 600 天

    [LV.9]以坛为家II

    379

    主题

    1万

    回帖

    3万

    积分

    贵宾

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮美女鼠牛虎兔龙蛇马羊猴鸡狗猪缤纷心情心曲飞扬花好月圆飞龙在天音画大师花潮贵宾

    发表于 2024-11-3 08:23 | 显示全部楼层
    黑黑老师早上好!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-12-14 08:25
  • 签到天数: 600 天

    [LV.9]以坛为家II

    379

    主题

    1万

    回帖

    3万

    积分

    贵宾

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮美女鼠牛虎兔龙蛇马羊猴鸡狗猪缤纷心情心曲飞扬花好月圆飞龙在天音画大师花潮贵宾

    发表于 2024-11-3 08:24 | 显示全部楼层
    我听课来了。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-12-1 20:32
  • 签到天数: 1052 天

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2024-11-3 08:24 | 显示全部楼层
    我想到了前面四项的设置,却忘记最后两项的圆角半径的事了
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-12-1 20:32
  • 签到天数: 1052 天

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2024-11-3 08:28 | 显示全部楼层
    这个是前三节课程里参数最多的了,有九项呢,但不难理解,4+3+2 ,指向都很清楚。还有对应的例图,非常清晰的讲解。
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-12-1 20:32
  • 签到天数: 1052 天

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2024-11-3 08:29 | 显示全部楼层
    “两个半径只设一个时,另一个缺省值与之相等,当任意一个设置为0时,另一个的设置无效;”

    这个黑黑在其他教学里讲过的,这里再加深一下印象
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-8-5 16:33
  • 签到天数: 44 天

    [LV.5]常住居民I

    62

    主题

    1万

    回帖

    2万

    积分

    贵宾

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮美女流光溢彩优雅神秘花潮贵宾

    发表于 2024-11-3 08:55 | 显示全部楼层
    矩形里还混进来两个圆形~~
    把宽高设置一样大小,再加rx('50%').和ry('50%').就变圆了啊。。
    有了圆角设置果然可以任意变形。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-8-5 16:33
  • 签到天数: 44 天

    [LV.5]常住居民I

    62

    主题

    1万

    回帖

    2万

    积分

    贵宾

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮美女流光溢彩优雅神秘花潮贵宾

    发表于 2024-11-3 08:58 | 显示全部楼层
    还真是所有图形都是近亲。。
    矩形能跟圆扯上关系,还这么自然而然。。。
    那么,画圆的方法又多一种,先画个正方形再追加一句50%
    还有,三角形能不能圆角啊。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-8-5 16:33
  • 签到天数: 44 天

    [LV.5]常住居民I

    62

    主题

    1万

    回帖

    2万

    积分

    贵宾

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮美女流光溢彩优雅神秘花潮贵宾

    发表于 2024-11-3 09:06 | 显示全部楼层
    这里的主要参数依然尊照按顺序,颜色缺席需占位的规则。。
    dr.rect(620, 220, 160, 160, 'forestgreen').ry('50%').stroke('indigo', 6);这里不要rx.只要ry,又没人给rx占位,就追加的方式来描述ry和stroke参数。。。是这意思吧。。
    既讲规则,又相对灵活。。

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-8-5 16:33
  • 签到天数: 44 天

    [LV.5]常住居民I

    62

    主题

    1万

    回帖

    2万

    积分

    贵宾

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮美女流光溢彩优雅神秘花潮贵宾

    发表于 2024-11-3 09:08 | 显示全部楼层
    rx('50%');ry('50%').效果大不相同啊。。。
    ry改一点点数据就不圆了。。rx怎么改都是圆的,除非改到10以下。。
    奇了。。明明宽高都是160
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3049

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2024-11-3 11:35 | 显示全部楼层
    花飞飞 发表于 2024-11-3 08:55
    矩形里还混进来两个圆形~~
    把宽高设置一样大小,再加rx('50%').和ry('50%').就变圆了啊。。
    有了圆角设置 ...

    好玩吧
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3049

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2024-11-3 11:43 | 显示全部楼层
    花飞飞 发表于 2024-11-3 08:58
    还真是所有图形都是近亲。。
    矩形能跟圆扯上关系,还这么自然而然。。。
    那么,画圆的方法又多一种,先画 ...

    三角形属于多边形,多边形没有 rx 和 ry 属性。这是隔了太多代,是远近亲。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3049

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2024-11-3 11:44 | 显示全部楼层
    花飞飞 发表于 2024-11-3 09:08
    rx('50%');ry('50%').效果大不相同啊。。。
    ry改一点点数据就不圆了。。rx怎么改都是圆的,除非改到10以下 ...

    这个原理和CSS的 border-radius 的取值方式一样
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3049

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2024-11-3 11:44 | 显示全部楼层
    花飞飞 发表于 2024-11-3 09:06
    这里的主要参数依然尊照按顺序,颜色缺席需占位的规则。。
    dr.rect(620, 220, 160, 160, 'forestgreen').r ...

    灵活是必须的
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3049

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2024-11-3 11:44 | 显示全部楼层
    梦江南 发表于 2024-11-3 08:23
    黑黑老师早上好!

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3049

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2024-11-3 11:45 | 显示全部楼层
    红影 发表于 2024-11-3 08:24
    我想到了前面四项的设置,却忘记最后两项的圆角半径的事了

    最初设计的时候,矩形的圆角半径紧跟在 height 之后,后来觉得不方便,把它们放后面去
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3049

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2024-11-3 11:45 | 显示全部楼层
    红影 发表于 2024-11-3 08:28
    这个是前三节课程里参数最多的了,有九项呢,但不难理解,4+3+2 ,指向都很清楚。还有对应的例图,非常清晰 ...

    共通的东东很多
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-12-14 13:51
  • 签到天数: 149 天

    [LV.7]常住居民III

    207

    主题

    3324

    回帖

    1万

    积分

    版主

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪心曲飞扬七彩绚丽飞龙在天王者至尊风雨同行流光溢彩花潮版主

    QQ
    发表于 2024-11-3 16:59 | 显示全部楼层
    收藏备用!问好先生!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-8-5 16:33
  • 签到天数: 44 天

    [LV.5]常住居民I

    62

    主题

    1万

    回帖

    2万

    积分

    贵宾

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮美女流光溢彩优雅神秘花潮贵宾

    发表于 2024-11-3 18:35 | 显示全部楼层

    就它俩最好玩了。。混在里面装矩形。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-8-5 16:33
  • 签到天数: 44 天

    [LV.5]常住居民I

    62

    主题

    1万

    回帖

    2万

    积分

    贵宾

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮美女流光溢彩优雅神秘花潮贵宾

    发表于 2024-11-3 18:37 | 显示全部楼层
    马黑黑 发表于 2024-11-3 11:43
    三角形属于多边形,多边形没有 rx 和 ry 属性。这是隔了太多代,是远近亲。

    远亲是远亲,近亲是近亲~~远近亲是哪里的亲戚呀。。
    我恍惚记得折角可以是圆的,我去翻翻教程。。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|手机版|Archiver|服务支持:DZ动力|huachaowang.com Inc. ( 蜀ICP备17032287号-1 )

    GMT+8, 2025-12-15 17:05 , Processed in 0.094928 second(s), 30 queries .

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

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