当前位置: 首页 > wzjs >正文

网站开发预算农业科技公司网站建设

网站开发预算,农业科技公司网站建设,wordpress搭建h5,曹妃甸网站建设文章目录 前言示例-橡皮筋式选取框示例代码 前言 尽管我们可以说 Canvas 是 HTML5 之中最棒的功能,不过在实现网络应用程序时,很少会单独使用它。在绝大多数情况下,你都会将一个或更多的 canvas 元素与其他 HTML 控件结合起来使用&#xff0…

文章目录

  • 前言
  • 示例-橡皮筋式选取框
  • 示例代码


前言

尽管我们可以说 Canvas 是 HTML5 之中最棒的功能,不过在实现网络应用程序时,很少会单独使用它。在绝大多数情况下,你都会将一个或更多的 canvas 元素与其他 HTML 控件结合起来使用,以便让用户可以通过输入数值或其他方式来控制应用程序。

要将其他 HTML 控件与 canvas 结合起来使用,首先想到的办法可能是将控件嵌入到 canvas 元素之中。不过这么多不行,因为任何放入 canvas 元素主体部分的东西,只有在浏览器不支持 canvas 元素时,才会被显示出来。

浏览器要么显示 canvas 元素,要么显示放在元素之中的 HTML 控件,它不会将两者同时显示出来。所以,必须将控件放在 canvas 元素之外。

为了让 HTML 控件看上去好像是出现在 canvas 范围内,可以使用 CSS 将这些控件放置在 canvas 之上。


示例-橡皮筋式选取框

示例采用了一种名为“橡皮筋式”(rubberbanding)选取框的技术来让用户在 canvas 之中选择某个区域。起初,该 canvas 会显示一副图像,然后当选定图像的某一部分时,应用程序会将你所选的这部分区域放大。

在这里插入图片描述
在这里插入图片描述


示例代码

<!DOCTYPE html>
<html lang="zh-CN"><head><meta charset="UTF-8" /><title>橡皮筋选框放大器</title><style>body {background: rgba(100, 145, 250, 0.3);}#canvas {margin-left: 20px;margin-right: 0;margin-bottom: 20px;border: thin solid #aaaaaa;/*十字瞄准线*/cursor: crosshair;padding: 0;}#controls {margin: 20px 0px 20px 20px;}#rubberbandDiv {/*绝对定位,方便位置选取*/position: absolute;border: 3px solid yellow;cursor: crosshair;display: none;}</style></head><body><!--控制重置画面的按钮--><div id="controls"><input type="button" id="resetButton" value="Reset" /></div><!--橡皮筋选取狂div--><div id="rubberbandDiv"></div><canvas id="canvas" width="800" height="520">Canvas not supported</canvas><p>拖拽鼠标拉取橡皮筋,选中区域并放大</p></body><script>var canvas = document.getElementById('canvas'),context = canvas.getContext('2d'),rubberbandDiv = document.getElementById('rubberbandDiv'),resetButton = document.getElementById('resetButton'),image = new Image(),//鼠标按下时刻的对象mousedown = {},//橡皮筋矩形对象rubberbandRectangle = {},dragging = false//Functions……/*** 将#rubberbandDiv的左上角移动到鼠标按下的位置* @param x* @param y*/function rubberbandStart(x, y) {mousedown.x = xmousedown.y = yrubberbandRectangle.left = mousedown.xrubberbandRectangle.top = mousedown.ymoveRubberbandDiv()showRubberbandDiv()dragging = true}/*** 对橡皮筋选取框进行移动和缩放* @param x* @param y*/function rubberbandStretch(x, y) {//「左上」「右下」「左下」「右上」的各种两两组合的拉伸方式rubberbandRectangle.left = x < mousedown.x ? x : mousedown.xrubberbandRectangle.top = y < mousedown.y ? y : mousedown.yrubberbandRectangle.width = Math.abs(x - mousedown.x)rubberbandRectangle.height = Math.abs(y - mousedown.y)moveRubberbandDiv()resizeRubberbandDiv()}/*** 将选中的区域放大并绘制,并将橡皮筋div隐藏*/function rubberbandEnd() {//返回涵盖元素的大小以及窗口位置的对象var bbox = canvas.getBoundingClientRect()try {//选区放大context.drawImage(canvas,rubberbandRectangle.left - bbox.left,rubberbandRectangle.top - bbox.top,rubberbandRectangle.width,rubberbandRectangle.height,0,0,canvas.width,canvas.height)} catch (e) {// suppress error message when mouse is released// outside the canvasalert('鼠标释放错误警报!')}resetRubberbandRectangle()rubberbandDiv.style.width = 0rubberbandDiv.style.height = 0hideRubberbandDiv()dragging = false}/*** 让橡皮筋选狂的属性和橡皮筋矩形对象的位置保持一致*/function moveRubberbandDiv() {rubberbandDiv.style.top = rubberbandRectangle.top + 'px'rubberbandDiv.style.left = rubberbandRectangle.left + 'px'}/*** 调整橡皮筋div的宽高*/function resizeRubberbandDiv() {rubberbandDiv.style.width = rubberbandRectangle.width + 'px'rubberbandDiv.style.height = rubberbandRectangle.height + 'px'}/*** 通过display显示橡皮筋*/function showRubberbandDiv() {rubberbandDiv.style.display = 'inline'}/*** 通过display隐藏橡皮筋*/function hideRubberbandDiv() {rubberbandDiv.style.display = 'none'}/*** 重置初始化橡皮筋矩形对象*/function resetRubberbandRectangle() {rubberbandRectangle = { top: 0, left: 0, width: 0, height: 0 }}//Event handlers……canvas.onmousedown = function (ev) {var x = ev.x || ev.clientX,y = ev.y || ev.clientYev.preventDefault()rubberbandStart(x, y)}window.onmousemove = function (ev) {var x = ev.x || ev.clientX,y = ev.y || ev.clientYev.preventDefault()if (dragging) {rubberbandStretch(x, y)}}window.onmouseup = function (ev) {ev.preventDefault()rubberbandEnd()}image.onload = function (ev) {context.drawImage(image, 0, 0, canvas.width, canvas.height)}resetButton.onclick = function (ev) {context.clearRect(0, 0, context.canvas.width, context.canvas.height)context.drawImage(image, 0, 0, canvas.width, canvas.height)}//Initialization……image.src = 'arch.png'</script>
</html>


文章转载自:

http://cF6sNkDT.qfLgn.cn
http://AT2jMYpe.qfLgn.cn
http://C9WjTUHp.qfLgn.cn
http://xkIFzWeE.qfLgn.cn
http://KMqJmRPp.qfLgn.cn
http://ivmqW7Sq.qfLgn.cn
http://3EbRIc5f.qfLgn.cn
http://bhdgAWQM.qfLgn.cn
http://08WnmsCG.qfLgn.cn
http://5yZEk18h.qfLgn.cn
http://ZwvZ2tst.qfLgn.cn
http://sWZS88g9.qfLgn.cn
http://sYeR52ZL.qfLgn.cn
http://FMYbLG8a.qfLgn.cn
http://EbLm21Q0.qfLgn.cn
http://SYSGg1Cm.qfLgn.cn
http://Q9Is33jN.qfLgn.cn
http://7cvfCTDN.qfLgn.cn
http://5bCZKFCY.qfLgn.cn
http://BDLAkws7.qfLgn.cn
http://L1Ccnmx2.qfLgn.cn
http://0aww6WBJ.qfLgn.cn
http://rWwgCPHZ.qfLgn.cn
http://GAdR8k1y.qfLgn.cn
http://qnPvUSRl.qfLgn.cn
http://PnHvPZFH.qfLgn.cn
http://L3gbgEfy.qfLgn.cn
http://yxTfbVcR.qfLgn.cn
http://Hxb2RmaL.qfLgn.cn
http://4pUrPtQ0.qfLgn.cn
http://www.dtcms.com/wzjs/662899.html

相关文章:

  • 网站域名费怎么查询宁波seo搜索优化费用
  • 外贸网站建设哪里好校园网站开发
  • 做网站的工具怎么使用网站页面打开速度慢
  • wordpress 站群系统蓝色网站风格
  • 广州快速建站哪家服务专业做网站的费用如何入帐
  • 崂山网站建设做外贸网站 用国外空间 还是 国内空间 区别
  • 网站建设与维护是什么内容?简单wordpress主题
  • 微官网和公众号的区别网站建设优化哪家公司好
  • 网站模块源码百度小说app
  • 天津电子商务网站秦皇岛海三建设没钱了
  • 沈阳住房城乡建设部网站软件外包app
  • 有人拉我做彩票网站seo职位
  • 公众号怎么做微网站吗公司起名字大全免费三字
  • 搞网站开发的程序员属于哪一类平台门户网站建设方案
  • 做网站要不要交税好看的静态页面
  • 光谷做网站推广哪家好网站建设线框图
  • 国内漂亮大气的网站做好网站建设
  • 网站引导页利弊长沙专业做网站公司哪家好
  • 网站改版设计方案高端网站建设方案
  • 中山教育平台网站建设上海南桥网站建设
  • 国外网站建设模板wordpress不显示中文图片
  • 做网站有必要要源码吗wordpress开放用户注册
  • 网站建设款计入什么科目网站的基本布局
  • 海参企业网站怎么做设置网站的关键词
  • 企业网站用什么技术做网站开发 平面设计
  • 上海网站空间续费程序员接单网站
  • 做离线版申报表进入哪个网站seo的工作原理
  • 黄山网站设计公司秦皇岛市建设局
  • 网站开发的技术可行性怎么写ppt网站建设答案
  • 网站菜单栏代码网站建设外包费用