首页前端开发HTMLHTML5 Canvas自定义圆角矩形与虚线示例代码

HTML5 Canvas自定义圆角矩形与虚线示例代码

时间2024-01-24 09:07:20发布访客分类HTML浏览462
导读:收集整理的这篇文章主要介绍了HTML5 Canvas自定义圆角矩形与虚线示例代码,觉得挺不错的,现在分享给大家,也给大家做个参考。 HTML5 canvas自定义圆角矩形与虚线(RoundedRectangle and Dash...
收集整理的这篇文章主要介绍了HTML5 Canvas自定义圆角矩形与虚线示例代码,觉得挺不错的,现在分享给大家,也给大家做个参考。 HTML5 canvas自定义圆角矩形与虚线(RoundedRectangle and Dash Line)

实现向HTML Canvas 2d context绘制对象中添加自定义的函数功能演示,如何绘制虚线以及控制虚线间隔大小,学会绘制圆角矩形的技巧。

HTML5 Canvas绘制对象中提供的原生功能没有实现绘制圆角矩形与虚线的功能,但是通过JavaScript语言的Object.PRototyPE可以实现对对象CanvasRenderingContext2D添加这两个函数功能。代码的演示效果如下:
 
组件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; dldashlineInteveral; 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; i10; i++) {
var delta = i*20;
var pattern = i*2+1;
context.dashedLineTo(250, 50+delta, 550, 50+delta, pattern);
}
}
/script>
/head>
body>
h1> HTML5 Canvas Dash-line Demo - By Gloomy Fish/h1>
pre> Dash line and Rounded Rectangle/pre>
div id="box_plot">
canvas id="text_canvas"> /canvas>
/div>
/body>
/html>

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

圆角矩形

若转载请注明出处: HTML5 Canvas自定义圆角矩形与虚线示例代码
本文地址: https://pptw.com/jishu/585232.html
HTML5 Canvas画线技巧——实现绘制一个像素宽的细线 HTML5 中新的全局属性(整理)

游客 回复需填写必要信息