微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

HTML5中如何利用Canvas自定义圆角矩形

这篇文章主要讲解了“HTML5中如何利用Canvas自定义圆角矩形”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“HTML5中如何利用Canvas自定义圆角矩形”吧!

HTML5 Canvas自定义圆角矩形与虚线(RoundedRectangle and Dash Line)
实现向HTML Canvas 2d context绘制对象中添加自定义函数功能演示,如何绘制虚线以及控制虚线间隔大小,学会绘制圆角矩形的技巧。
HTML5 Canvas绘制对象中提供的原生功能没有实现绘制圆角矩形与虚线的功能,但是通过JavaScript语言的Object.prototype可以实现对对象CanvasRenderingContext2D添加这两个函数功能代码的演示效果如下:

HTML5中如何利用Canvas自定义圆角矩形

 
组件fishcomponent.js的代码如下:

代码如下:

CanvasRenderingContext2D.prototype.roundRect =
function(x, y, width, height, radius, fill, stroke) {
if (typeof stroke == "undefined") {
stroke = true;
}
if (typeof radius === "undefined") {
radius = 5;
}
this.beginPath();
this.moveto(x + radius, y);
this.lineto(x + width - radius, y);
this.quadraticCurveto(x + width, y, x + width, y + radius);
this.lineto(x + width, y + height - radius);
this.quadraticCurveto(x + width, y + height, x + width - radius, y+ height);
this.lineto(x + radius, y + height);
this.quadraticCurveto(x, y + height, x, y + height - radius);
this.lineto(x, y + radius);
this.quadraticCurveto(x, y, x + radius, y);
this.closePath();
if (stroke) {
this.stroke();
}
if (fill) {
this.fill();
}
};
CanvasRenderingContext2D.prototype.dashedLineto = function (fromX, fromY, toX, toY, pattern) {
// default interval distance -> 5px
if (typeof pattern === "undefined") {
pattern = 5;
}
// calculate the delta x and delta y
var dx = (toX - fromX);
var dy = (toY - fromY);
var distance = Math.floor(Math.sqrt(dx*dx + dy*dy));
var dashlineInteveral = (pattern <= 0) ? distance : (distance/pattern);
var deltay = (dy/distance) * pattern;
var deltax = (dx/distance) * pattern;
// draw dash line
this.beginPath();
for(var dl=0; dl<dashlineInteveral; dL++) {
if(dl%2) {
this.lineto(fromX + dl*deltax, fromY + dl*deltay);
} else {
this.moveto(fromX + dl*deltax, fromY + dl*deltay);
}
}
this.stroke();
};


HTML中调用演示:

代码如下:


<!DOCTYPE html>
<html>
<head>
<Meta http-equiv="X-UA-Compatible" content="chrome=IE8">
<Meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<title>Canvas Rounded Rectangle Demo</title>
<script src="fishcomponent.js"></script>
<link href="default.css" rel="stylesheet" />
<script>
var ctx = null; // global variable 2d context
var imageTexture = null;
window.onload = function() {
var canvas = document.getElementById("text_canvas");
console.log(canvas.parentNode.clientWidth);
canvas.width = canvas.parentNode.clientWidth;
canvas.height = canvas.parentNode.clientHeight;
if (!canvas.getContext) {
console.log("Canvas not supported. Please install a HTML5 compatible browser.");
return;
}
var context = canvas.getContext('2d');
context.strokeStyle="red";
context.fillStyle="RGBA(100,255,100, 0.5)";
context.roundRect(50, 50, 150, 150, 5, true);
context.strokeStyle="blue";
for(var i=0; i<10; i++) {
var delta = i*20;
var pattern = i*2+1;
context.dashedLineto(250, 50+delta, 550, 50+delta, pattern);
}
}
</script>
</head>
<body>
<h2>HTML5 Canvas Dash-line Demo - By Gloomy Fish</h2>
<pre>Dash line and Rounded Rectangle</pre>
<div id="Box_plot">
<canvas id="text_canvas"></canvas>
</div>
</body>
</html>

感谢各位的阅读,以上就是“HTML5中如何利用Canvas自定义圆角矩形”的内容了,经过本文的学习后,相信大家对HTML5中如何利用Canvas自定义圆角矩形这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程之家,小编将为大家推送更多相关知识点的文章,欢迎关注!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐