亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

HTML5 Canvas自定義圓角矩形與虛線(Rounded Rectangle and Dash Line)

發布時間:2020-07-17 04:54:32 來源:網絡 閱讀:278 作者:gloomyfish 欄目:移動開發

HTML5 Canvas自定義圓角矩形與虛線(RoundedRectangle and Dash Line)

實現向HTML Canvas 2d context繪制對象中添加自定義的函數功能演示,如何繪制虛線

以及控制虛線間隔大小,學會繪制圓角矩形的技巧。

HTML5 Canvas繪制對象中提供的原生功能沒有實現繪制圓角矩形與虛線的功能,但是

通過JavaScript語言的Object.prototype可以實現對對象CanvasRenderingContext2D

加這兩個函數功能。代碼的演示效果如下:

HTML5 Canvas自定義圓角矩形與虛線(Rounded Rectangle and Dash Line)


組件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>
轉載請注明

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

华亭县| 辛集市| 仙桃市| 合作市| 元江| 马尔康县| 抚远县| 绵阳市| 灵武市| 巩义市| 赤城县| 泾源县| 牙克石市| 东山县| 南召县| 合山市| 阿克苏市| 肇州县| 西贡区| 汉中市| 临洮县| 黔西县| 康定县| 临朐县| 天峨县| 彭泽县| 泽州县| 鹿泉市| 永福县| 遂昌县| 温泉县| 乳山市| 铜川市| 永吉县| 安宁市| 阿拉善盟| 石柱| 郑州市| 桂阳县| 武定县| 安多县|