• canvas实现图片圆边-直角


    canvas实现图片圆边

    参考资料: https://www.cnblogs.com/lanshengzhong/p/8609945.html

    效果

    源代码

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8" />
    		<meta name="viewport" content="width=device-width, initial-scale=1">
    		<title>实现圆角</title>
    	</head>
    	<body>
    		<strong>这是原图</strong>
    		<p><img src="http://image.zhangxinxu.com/image/study/s/s256/mm1.jpg" width="256" height="191"></p>
    		<strong>这是Canvas实现</strong>
    		<p>圆角大小:<span class="range-txt"> 0 <input id="radiusInput" type="range" min="0" max="92" value="0"> 92</span></p>
    		<canvas id="canvas" width="256" height="191"></canvas>
    		<script type="text/javascript">
    			//圆角矩形
    			CanvasRenderingContext2D.prototype.roundRect = function (x, y, w, h, r) {
    			    var min_size = Math.min(w, h);
    			    if (r > min_size / 2) r = min_size / 2;
    			    // 开始绘制
    			    this.beginPath();
    			    this.moveTo(x + r, y);
    			    this.arcTo(x + w, y, x + w, y + h, r);
    			    // this.arcTo(x + w, y + h, x, y + h, r);
    				this.lineTo( x + w , y + h ) //   直角不变化
    			    this.arcTo(x, y + h, x, y, r);
    			    this.arcTo(x, y, x + w, y, r);
    			    this.closePath();
    			    return this;
    			}
    			// canvas元素, 图片元素
    			var canvas = document.querySelector("#canvas"), image = new Image(), input = document.getElementById("radiusInput");
    			var context = canvas.getContext("2d");
    			var draw = function(obj) {
    			    // 创建图片纹理
    			    var pattern = context.createPattern(obj, "no-repeat");
    			    // 如果要绘制一个圆,使用下面代码
    			    // context.arc(obj.width / 2, obj.height / 2, Math.max(obj.width, obj.height) / 2, 0, 2 * Math.PI);
    			    // 这里使用圆角矩形
    			    context.roundRect(0, 0, obj.width, obj.height, input.value * 1 || 0);
    			    // 填充绘制的圆
    			    context.fillStyle = pattern;
    			    context.fill();    
    			}
    			image.src = "http://image.zhangxinxu.com/image/study/s/s256/mm1.jpg";
    			image.onload = function() {
    			    draw(this);
    			};
    			input.addEventListener("change", function() {
    			    context.clearRect(0, 0, canvas.width, canvas.height);
    			    draw(image);	
    			});
    		</script>
    	</body>
    </html>
    
  • 相关阅读:
    python购物车demo
    python对json的操作总结
    sysctl -p详解
    软件生命周期模型——瀑布模型
    如何启用linux的路由转发功能
    pycharm常用快捷键
    zabbix 支持的主要监控方式
    CentOs7安装部署Zabbix3.4
    CentOS EPEL yum源
    vmware虚拟机三种网卡
  • 原文地址:https://www.cnblogs.com/1748sb/p/14309372.html
Copyright © 2020-2023  润新知