web前端

位置:IT落伍者 >> web前端 >> 浏览文章

基于SVG的web页面图形绘制API介绍及编程演示


发布日期:2022年07月19日
 
基于SVG的web页面图形绘制API介绍及编程演示
SVG的全称是可扩展的矢量图形跟传统的Raster方式的图形(JPG PNG GIF等)有很大的差别下面与大家分享下JavaScript中SVG API编程演示感兴趣的朋友可以参考下哈什么是SVG
SVG是由WC发布的D图形描述语言纯基于XML格式的标记语言SVG的
全称是可扩展的矢量图形跟传统的Raster方式的图形(JPG PNG GIF等)有很大的差
SVG是D图形开发平台包括两个部分一个是基于XML语言的数据描述
外一部分是可编程的API其关键特性支持图形文本梯度填充画笔风格图形
特效滤镜如高斯模糊会在稍后的代码中演示同时还支持各种鼠标事件与DOM部
分API几乎所有的主流浏览器都支持SVG图形格式的现实与绘制IE+以上也开始
支持SVG在低版本的IE中需要插件支持
更多了解SVG访问这里

JavaScript中SVG API编程演示
创建与获取SVG对象
复制代码 代码如下:
// create svg object
var mySvg = documentcreateElementNS(""svg");
mySvgsetAttribute("version""");// IE+ support SVG version
mySvgsetAttribute("baseProfile""tiny");
containerappendChild(mySvg);
在SVG中创建一个矩形图形
复制代码 代码如下:
var c = documentcreateElementNS(""rect");
csetAttribute("x""");
csetAttribute("y""");
csetAttribute("width""");
csetAttribute("height""");
csetAttribute("fill""rgb()");
csetAttribute("stroke""rgb()");
csetAttribute("strokewidth""");
mySvgappendChild(c);
在SVG中实现文本绘制
复制代码 代码如下:
// SVG draw text
var stext = documentcreateElementNS(""text");
stextsetAttribute("x""");
stextsetAttribute("y""");
stextsetAttribute("fontsize""px");
stextsetAttribute("fill""#FF");
var textString = documentcreateTextNode("Hello SVG");
stextappendChild(textString);
mySvgappendChild(stext);
在SVG对象上实现鼠标点击事件处理与MouseUp事件处理
复制代码 代码如下:
// mouse event handling
caddEventListener("click"changeColorfalse);
caddEventListener("mouseup" changeColorfalse);
通过SVG 图形滤镜实现高斯模糊
复制代码 代码如下:
<div id="blurimagedemo">
<div id="left" style="width:%;"><img src="woniupng" alt="Original image" width="" height=""></div>
<div id="right" style="width:%;">
<svg xmlns="
<defs>
<filter id="f" x="" y="">
<feGaussianBlur in="SourceGraphic" stdDeviation="" />
</filter>
</defs>
<image x="" y="" width="" height="" xlink:href="woniupng" filter="url(#f)"/>
</svg>
</div>
</div>
运行效果

源代码可以copy直接运行
JavaScript部分
复制代码 代码如下:
windowonload = function() {
// get DIV
var container = documentgetElementById("svgContainer");
// create svg object
var mySvg = documentcreateElementNS(" "svg");
mySvgsetAttribute("version" "");// IE+ support SVG version
mySvgsetAttribute("baseProfile" "tiny");
containerappendChild(mySvg);

// create svg shape rectangle
var c = documentcreateElementNS(" "rect");
csetAttribute("x" "");
csetAttribute("y" "");
csetAttribute("width" "");
csetAttribute("height" "");
csetAttribute("fill" "rgb()");
csetAttribute("stroke" "rgb()");
csetAttribute("strokewidth" "");
mySvgappendChild(c);

// create svg shape circle
var c = documentcreateElementNS(" "circle");
csetAttribute("cx" "");
csetAttribute("cy" "");
csetAttribute("r" "");
csetAttribute("fill" "#");
csetAttribute("stroke" "#AAFF");
csetAttribute("strokewidth" "");
mySvgappendChild(c);

// create svg shape ellipse
var c = documentcreateElementNS(" "ellipse");
csetAttribute("cx" "");
csetAttribute("cy" "");
csetAttribute("rx" "");
csetAttribute("ry" "");
csetAttribute("fill" "#FF");
csetAttribute("stroke" "purple");
csetAttribute("strokewidth" "");
mySvgappendChild(c);

// create svg shape draw lines
for(var i=; i<; i++)
{
var sline = documentcreateElementNS(" "line");
var x = + i*;
consolelog(x);

slinesetAttribute("x" xtoString());
slinesetAttribute("y" "");
slinesetAttribute("x" xtoString());
slinesetAttribute("y" "");
slinesetAttribute("stroke" "rgb()");
slinesetAttribute("strokewidth" "");
mySvgappendChild(sline);
}

// SVG draw text
var stext = documentcreateElementNS(" "text");
stextsetAttribute("x" "");
stextsetAttribute("y" "");
stextsetAttribute("fontsize" "px");
stextsetAttribute("fill" "#FF");
var textString = documentcreateTextNode("Hello SVG");
stextappendChild(textString);
mySvgappendChild(stext);

// mouse event handling
caddEventListener("click" changeColor false);
caddEventListener("mouseup" changeColor false);
};
function changeColor(evt) {
var target = evttarget;
targetsetAttributeNS(null "fill" "green");
}
HTML部分
复制代码 代码如下:
<html>
<head>
<title>Gloomyfish SVG Demo</title>
<style>
#svgContainer {
width:px;
height:px;
backgroundcolor:#EEEEEE;
}
#left { float: left;}
#right { float: right;}
</style>
</head>
<body>
<div id="svgContainer"></div>
<div id="blurimagedemo">
<div id="left" style="width:%;"><img src="woniupng" alt="Original image" width="" height=""></div>
<div id="right" style="width:%;">
<svg xmlns="
<defs>
<filter id="f" x="" y="">
<feGaussianBlur in="SourceGraphic" stdDeviation="" />
</filter>
</defs>
<image x="" y="" width="" height="" xlink:href="woniupng" filter="url(#f)"/>
</svg>
</div>
</div>
</body>
</html>

上一篇:20行代码实现的一个CSS覆盖率测试脚本

下一篇:WEB开发学堂:一个大学生的网页设计生涯