花潮论坛

搜索
热搜: 活动 交友 discuz
查看: 43|回复: 9

svgdr image 指令应用举例

[复制链接]
  • TA的每日心情
    擦汗
    2026-8-15 08:35
  • 签到天数: 1900 天

    [LV.Master]伴坛终老

    3308

    主题

    13万

    回帖

    29万

    积分

    管理员

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

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

    发表于 2026-8-14 17:38 | 显示全部楼层 |阅读模式

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

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

    x

    svg image 标签用于在SVG画布中加载任意格式的图片,一般情况下接纳四个参数:

    1. x:图片左上角X坐标(例 : x="10")
    2. y:图片左上角Y坐标(例 : y="10")
    3. width:图片宽度(例 : width="200")
    4. height:图片高度(例 : height="100")

    【例】<image href="图片地址" x="10" y="10" width="200" height="100" />

    svgdr image 指令语法:image(href, x, y, width, height)

    假设我们需要在SVG画布上绘制一个图片,用 svgdr image 指令可以这样:

    var img = 'https://638183.freep.cn/638183/small/780.png';
    dr.image(
        img, // href
        10,  // x
        10,  // y
        180, // width
        180  // height
    );
    
    // 或者干脆写成一行
    dr.image('https://638183.freep.cn/638183/small/780.png', 10, 10, 180, 180);
        

    上述指令等同于如下 svg 代码:

    <image href="https://638183.freep.cn/638183/small/780.png" x="10" y="10" width="180" height="180" />

    图片定位的核心在于 image 的 x、y 坐标,假设我们需要绕圈画 5 张图片:

    // 使用 circlePoints 指令获得 5 个圆周点坐标
    var points = dr.circlePoints(
        5,   // pointsNumber
        200, // R
        120, // r
    );
    
    // 遍历圆周上5个点,在每一个点上合适的位置画图
    points.forEach(p => {
        dr.image(
            'https://638183.freep.cn/638183/small/780.png', // href
            p[0] - 90, // x
            p[1] - 90, // y
            180,       // width
            180        // height
        );
    });
    
    // 或者将上述代码简化成
    dr.circlePoints(5, 200, 120).forEach(p => {
        dr.image('https://638183.freep.cn/638183/small/780.png', p[0] -90, p[1] - 90, 180, 180);
    });
        

    现在可以将上述拆解的步骤代码整合起来,使用 svgdr 真正绘制预设图案了。以下实例,image 指令在 circlePoints 指令的配合下生成 5 个圆周点并于其上画 5 张小花图片,图片的中心点与所在圆周点重合。代码还使用 line 指令绘制 5 根从SVG中心点到各圆周点的直线,与花朵共同构建复合图案。此外,还使用 SVG 内嵌 style 标签生成CSS样式设置图片的相关属性和关键帧动画。下面是支持在线预览的完整代码:

    <svg id="msvg" widt="400" height="400" viewBox="0 0 400 400"></svg>
    
    <script charset="utf-8" src="https://638183.freep.cn/638183/svgdr/svgdr.min.js"></script>
    
    <script>
        var dr = _dr(msvg); //dr画笔
        // 生成5个圆周点并在其上绘制图案
        dr.circlePoints(5, 200, 120).forEach(p => {
            // 5根从圆心到各点的连线
            dr.line(200, 200, p[0], p[1], 'tan', 3);
            // 5张图片,各图中心点与5个圆周点坐标重合
            dr.image('https://638183.freep.cn/638183/small/780.png', p[0] - 90, p[1] - 90, 180, 180);
        });
        // 生成svg内嵌CSS样式
        dr.css(`
            image { transform-box: fill-box; transform-origin: center; animation: rot linear 8s infinite; }
            @keyframes rot { to { transform: rotate(360deg); } }
        `);
    </script>
        

    svgdr 生成的 HTML 代码如下:

    <svg id="msvg" width="400" height="400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 400">
    	<line x1="200" y1="200" x2="320.00" y2="200.00" stroke="tan" stroke-width="3"></line>
    	<image href="https://638183.freep.cn/638183/small/780.png" x="230" y="110" width="180" height="180"></image>
    	<line x1="200" y1="200" x2="237.08" y2="314.13" stroke="tan" stroke-width="3"></line>
    	<image href="https://638183.freep.cn/638183/small/780.png" x="147.08" y="224.13" width="180" height="180"></image>
    	<line x1="200" y1="200" x2="102.92" y2="270.53" stroke="tan" stroke-width="3"></line>
    	<image href="https://638183.freep.cn/638183/small/780.png" x="12.920000000000002" y="180.52999999999997" width="180" height="180"></image>
    	<line x1="200" y1="200" x2="102.92" y2="129.47" stroke="tan" stroke-width="3"></line>
    	<image href="https://638183.freep.cn/638183/small/780.png" x="12.920000000000002" y="39.47" width="180" height="180"></image>
    	<line x1="200" y1="200" x2="237.08" y2="85.87" stroke="tan" stroke-width="3"></line>
    	<image href="https://638183.freep.cn/638183/small/780.png" x="147.08" y="-4.1299999999999955" width="180" height="180"></image>
    	<style>
    	    image {
                transform-box: fill-box;
                transform-origin: center;
                animation: rot linear 8s infinite;
            }
            @keyframes rot {
                to { transform: rotate(360deg); }
            }
        </style>
    </svg>
        

    评分

    参与人数 2威望 +60 金钱 +120 经验 +60 收起 理由
    杨帆 + 30 + 60 + 30 匠心独运,细节精致入微!
    梦江南 + 30 + 60 + 30 匠心独运,细节精致入微!

    查看全部评分

  • TA的每日心情
    开心
    2026-8-15 08:50
  • 签到天数: 811 天

    [LV.10]以坛为家III

    584

    主题

    4万

    回帖

    10万

    积分

    贵宾

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

    花潮美女鼠牛虎兔龙蛇马羊猴鸡狗猪缤纷心情心曲飞扬花好月圆飞龙在天音画大师天籁妙音共看流星风雨同行我心永远喜乐安康花潮贵宾

    发表于 2026-8-14 20:26 | 显示全部楼层
    黑黑老师晚上嚎!谢谢老师辛苦,学习了。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2026-8-15 08:50
  • 签到天数: 811 天

    [LV.10]以坛为家III

    584

    主题

    4万

    回帖

    10万

    积分

    贵宾

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

    花潮美女鼠牛虎兔龙蛇马羊猴鸡狗猪缤纷心情心曲飞扬花好月圆飞龙在天音画大师天籁妙音共看流星风雨同行我心永远喜乐安康花潮贵宾

    发表于 2026-8-14 20:27 | 显示全部楼层
    很漂亮的五朵小白花。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2026-8-15 06:48
  • 签到天数: 627 天

    [LV.9]以坛为家II

    394

    主题

    4857

    回帖

    2万

    积分

    版主

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

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生鹰傲苍穹飞龙在天王者至尊大将风范花潮版主

    发表于 2026-8-14 21:15 | 显示全部楼层
    svgdr image 指令好像没用过呢,谢谢马老师直观、详尽的应用举例
    ★青春是一个人的精神生命,奋斗是一个人最大的体面,学习是一个人最美的姿态。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2026-8-15 08:35
  • 签到天数: 1900 天

    [LV.Master]伴坛终老

    3308

    主题

    13万

    回帖

    29万

    积分

    管理员

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

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

     楼主| 发表于 2026-8-14 21:36 | 显示全部楼层
    杨帆 发表于 2026-8-14 21:15
    svgdr image 指令好像没用过呢,谢谢马老师直观、详尽的应用举例

    指令严格遵循 image 标签的常规属性
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2026-8-15 08:35
  • 签到天数: 1900 天

    [LV.Master]伴坛终老

    3308

    主题

    13万

    回帖

    29万

    积分

    管理员

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

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

     楼主| 发表于 2026-8-14 21:36 | 显示全部楼层
    梦江南 发表于 2026-8-14 20:27
    很漂亮的五朵小白花。

    感谢谬赞
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2026-8-15 08:35
  • 签到天数: 1900 天

    [LV.Master]伴坛终老

    3308

    主题

    13万

    回帖

    29万

    积分

    管理员

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

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

     楼主| 发表于 2026-8-14 21:36 | 显示全部楼层
    梦江南 发表于 2026-8-14 20:26
    黑黑老师晚上嚎!谢谢老师辛苦,学习了。

    晚上嚎
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2026-8-15 06:48
  • 签到天数: 627 天

    [LV.9]以坛为家II

    394

    主题

    4857

    回帖

    2万

    积分

    版主

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

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生鹰傲苍穹飞龙在天王者至尊大将风范花潮版主

    发表于 2026-8-14 21:40 | 显示全部楼层
    马黑黑 发表于 2026-8-14 21:36
    指令严格遵循 image 标签的常规属性

    好的,这样应用起来就容易一些了
    ★青春是一个人的精神生命,奋斗是一个人最大的体面,学习是一个人最美的姿态。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2026-8-15 08:35
  • 签到天数: 1900 天

    [LV.Master]伴坛终老

    3308

    主题

    13万

    回帖

    29万

    积分

    管理员

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

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

     楼主| 发表于 2026-8-14 21:53 | 显示全部楼层
    杨帆 发表于 2026-8-14 21:40
    好的,这样应用起来就容易一些了

    svgdr 开发本意就是为了学习 svg,同时可以简化对 svg 的实际应用。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2026-8-15 06:48
  • 签到天数: 627 天

    [LV.9]以坛为家II

    394

    主题

    4857

    回帖

    2万

    积分

    版主

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

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生鹰傲苍穹飞龙在天王者至尊大将风范花潮版主

    发表于 2026-8-15 17:31 | 显示全部楼层
    马黑黑 发表于 2026-8-14 21:53
    svgdr 开发本意就是为了学习 svg,同时可以简化对 svg 的实际应用。

    马老师开发svgdr 意义重大, 是学习 svg的法宝,也是简化svg 应用的利器
    ★青春是一个人的精神生命,奋斗是一个人最大的体面,学习是一个人最美的姿态。
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2026-8-15 18:44 , Processed in 0.082435 second(s), 26 queries .

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

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