分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

JS ?canvas标签动态绘制图型

发布时间:2023-09-06 02:24责任编辑:赖小花关键词:暂无标签

使用canvas标签动态绘制图型,当点击鼠标时,以鼠标点击的坐标作为图形中心点。当点击数为偶数时画三角形,当点击数为奇数时画五角星

<!DOCTYPE HTML><html><head> ???<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> ???<title></title> ???<style type="text/css"></style> ???<script type="text/javascript"> ???????var g=0; ???????function getStyles(obj) { ???????????return document.defaultView.getComputedStyle(obj); ???????} ????????function getCanvasPos(canvas,e) ?{ ?//获取鼠标在canvas上的坐标 ?????????????var rect = canvas.getBoundingClientRect(); ????????????var leftB = parseInt(getStyles(canvas).borderLeftWidth);//获取的是样式,需要转换为数值 ???????????var topB = parseInt(getStyles(canvas).borderTopWidth); ???????????return { ???????????????????x: (e.clientX - rect.left) - leftB, ??????????????????y: (e.clientY - rect.top) - topB ???????????????}; ?????????} ?????????function drawStar(context, r, R, x, y) { ??// 画五角星 ???????????context.beginPath(); ???????????for(var i=0;i<5;i++){ ???????????????context.lineTo(Math.cos((18+i*75)/180*Math.PI)*R+x,-Math.sin((18+i*75)/180*Math.PI)*R+y); ???????????????context.lineTo(Math.cos((54+i*75)/180*Math.PI)*r+x,-Math.sin((54+i*75)/180*Math.PI)*r+y); ???????????} ???????????context.closePath(); ???????????context.stroke(); ???????????context.fill(); ???????} ???????function drawsan(context,r,x,y){ ?// 画三角形 ???????????context.beginPath(); ???????????context.moveTo(x,y-r); ???????????context.lineTo(Math.cos( 320/180*Math.PI )*r+x,Math.sin(40/180*Math.PI )*r+y); ???????????context.lineTo(Math.cos( 210/180*Math.PI )*r+x,Math.sin(40/180*Math.PI )*r+y); ???????????context.closePath(); ???????????context.stroke(); ???????????context.fill(); ???????} ??????????function draw(e) { ???????????g++; ???????????var mycanvas=document.getElementById(‘mycanvas‘); ???????????var context=mycanvas.getContext(‘2d‘); ???????????context.clearRect(0,0,mycanvas.width,mycanvas.height); ?????????????context.strokeStyle="powderblue"; ???????????context.fillStyle="powderblue"; ???????????if(g%2==0){ ????????????????drawsan(context, 30, getCanvasPos(mycanvas,e).x, getCanvasPos(mycanvas,e).y); ???????????} ???????????else{ ???????????????drawStar(context,25,50,getCanvasPos(mycanvas,e).x,getCanvasPos(mycanvas,e).y); ???????????} ???????} ???</script></head><body> ???<div onmousedown="draw(event)"> ???????<canvas width="600px" height="400px" style="border: 1px solid black;" id="mycanvas"></canvas> ???</div></body></html>

JS ?canvas标签动态绘制图型

原文地址:https://www.cnblogs.com/huaspsw/p/10055234.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved