javascript - 如何使用 D3.js 将图像添加到 svg 容器

标签 javascript asp.net-mvc-4 svg d3.js

我创建了一个示例 Asp.Net MVC 4 应用程序,我在其中使用 D3.js 附加了一个 SVG 元素,然后在 SVG 中附加了一个文本元素(参见下面的代码)。在我尝试使用本地 png 文件将 img 附加到 SVG 之前,这一切都很好。 img 被附加到 DOM,但 img 没有呈现在页面上。知道我在这里做错了什么,以及如何解决它吗?

@{
    ViewBag.Title = "Home Page";
}

<script src="~/Scripts/d3.v3.js"></script>
<script type="text/javascript">
    var svg = d3.select("body")
        .append("svg")
        .attr("width", 200)
        .attr("height", 100)
        .style("border", "1px solid black");

    var text = svg.selectAll("text")
        .data([0])
        .enter()
        .append("text")
        .text("Testing")
        .attr("x", "40")
        .attr("y", "60");

    var imgs = svg.selectAll("img").data([0]);
    imgs.enter()
        .append("img")
        .attr("xlink:href", "@Url.Content("~/Content/images/icons/refresh.png")")
        .attr("x", "60")
        .attr("y", "60")
        .attr("width", "20")
        .attr("height", "20");

</script>

@Richard Marr - 下面是尝试在纯 HTML 中做同样的事情,这给了我同样的结果。我不确定我的代码是否以这种方式从本地驱动器获取 refresh.png 文件。

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <script src="http://d3js.org/d3.v2.js"></script>

    </head>
    <body>
        <script type="text/javascript">
            var svg = d3.select("body")
                .append("svg")
                .attr("width", 200)
                .attr("height", 100)
                .style("border", "1px solid black");

            var text = svg.selectAll("text")
                .data([0])
                .enter()
                .append("text")
                .text("Testing")
                .attr("x", "40")
                .attr("y", "60");

            var imgs = svg.selectAll("img").data([0]);
                imgs.enter()
                .append("svg:img")
                .attr("xlink:href", "file:///D:/d3js_projects/refresh.png")
                .attr("x", "60")
                .attr("y", "60")
                .attr("width", "20")
                .attr("height", "20");

        </script>
    </body>
</html>

最佳答案

nodeEnter.append("svg:image")
.attr('x', -9)
.attr('y', -12)
.attr('width', 20)
.attr('height', 24)
.attr("xlink:href", "resources/images/check.png")

关于javascript - 如何使用 D3.js 将图像添加到 svg 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14567809/

相关文章:

javascript - 为什么我的回调函数没有在下面的 db.collection.findOne 方法中执行

javascript - 在 Firefox 中打印代码但在 IE 中不打印

c# - 在 mvc razor 中更新两个局部 View 的最佳方法

c# - 如何使用 knockout、jquery 和 ASP.NET MVC 创建可重用的控件?

ajax - asp.net mvc 4 Controller 并行执行多个 ajax 调用

javascript - Adobe 空气 : draw vector graphics

javascript - 为什么我的指定表格没有被退回?

javascript - "Cannot read property ' 尝试映射状态并将其作为 props 传递到组件时映射 ' of undefined"

html - 如何去除 svg 边缘的背景色

php - 从客户端 DOM 序列化 SVG 的最佳方式是什么?