小结:

1、线性规划

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>canvas点击事件</title></head>

<body></body>

</html>

<canvas id="myCanvas" width="800" height="800" style="border:1px solid #d3d3d3;">您的浏览器不支持 HTML5 canvas 标签。</canvas>

<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>

<script>var c = document.getElementById("myCanvas");

var ctx = c.getContext("2d");

function drawSquare(colorStr) {

ctx.beginPath();

ctx.moveTo(0, 0);

ctx.lineTo(0, 100);

ctx.lineTo(100, 100);

ctx.lineTo(100, 0);

ctx.lineTo(0, 0);

ctx.lineWidth = 6;

ctx.strokeStyle = colorStr;

ctx.stroke();

ctx.closePath();

}

function drawTri(colorStr) {

ctx.beginPath();

ctx.moveTo(50, 0);

ctx.lineTo(0, 100);

ctx.lineTo(100, 100);

ctx.lineTo(50, 0);

ctx.lineWidth = 4;

ctx.strokeStyle = colorStr;

ctx.stroke();

ctx.closePath();

}

function drawBorder() {

drawTri('red');

drawSquare('green');

}

function onSquare(p) {

if ((p.x == 0 && p.y <= 100) || (p.x <= 100 && p.y == 100)) {

return true

} else {

return false

}

}

function onTri(p) {

if ((p.y - 0) / (p.x - 50) == 100 / ( - 50)) {

return true

} else {

return false

}

}

var colorToggleSquare = {

b: true,

c0: 'black',

c1: 'yellow'

};

var colorToggleTri = {

b: true,

c0: 'blue',

c1: 'pink'

};

$(function() {

var myAction = {};

var dom = {

canvas: $('#myCanvas')

};

$.extend(myAction, {

initCanvas: function() {

drawBorder()

},

getEventPosition: function(ev) {

var x, y;

if (ev.layerX || ev.layerX == 0) {

x = ev.layerX;

y = ev.layerY;

} else if (ev.offsetX || ev.offsetX == 0) {

x = ev.offsetX;

y = ev.offsetY;

}

return {

x: x,

y: y

};

},

initEvent: function() {

dom.canvas.on('click',

function(e) {

var p = myAction.getEventPosition(e);

console.log(p);

if (onSquare(p)) {

if (colorToggleSquare.b) {

drawSquare(colorToggleSquare.c0);

} else {

drawSquare(colorToggleSquare.c1);

}

colorToggleSquare.b = !colorToggleSquare.b;

} else if (onTri(p)) {

if (colorToggleTri.b) {

drawTri(colorToggleTri.c0);

} else {

drawTri(colorToggleTri.c1);

}

colorToggleTri.b = !colorToggleTri.b;

}

});

}

});

var init = function() {

myAction.initCanvas();

myAction.initEvent();

} ();

})</script>

canvas 线性规划的更多相关文章

  1. html5 canvas常用api总结(三)--图像变换API

    canvas的图像变换api,可以帮助我们更加方便的绘画出一些酷炫的效果,也可以用来制作动画.接下来将总结一下canvas的变换方法,文末有一个例子来更加深刻的了解和利用这几个api. 1.画布旋转a ...

  2. 【探索】利用 canvas 实现数据压缩

    前言 HTTP 支持 GZip 压缩,可节省不少传输资源.但遗憾的是,只有下载才有,上传并不支持.如果上传也能压缩,那就完美了.特别适合大量文本提交的场合,比如博客园,就是很好的例子. 虽然标准不支持 ...

  3. 简单入门canvas - 通过刮奖效果来学习

    一 .前言 一直在做PC端的前端开发,从互联网到行业软件.最近发现移动端已经成为前端必备技能了,真是不能停止学习.HTML5新增的一些东西,canvas是用的比较多也比较复杂的一个,简单的入门了一下, ...

  4. 获取Canvas当前坐标系矩阵

    前言 在我的另一篇博文 Canvas坐标系转换 中,我们知道了所有的平移缩放旋转操作都会影响到画布坐标系.那在我们对画布进行了一系列操作之后,怎么再知道当前矩阵数据状态呢. 具体代码 首先请看下面的一 ...

  5. Canvas坐标系转换

    默认坐标系与当前坐标系 canvas中的坐标是从左上角开始的,x轴沿着水平方向(按像素)向右延伸,y轴沿垂直方向向下延伸.左上角坐标为x=0,y=0的点称作原点.在默认坐标系中,每一个点的坐标都是直接 ...

  6. Canvas绘图之平移translate、旋转rotate、缩放scale

    画布操作介绍 画布绘图的环境通过translate(),scale(),rotate(), setTransform()和transform()来改变,它们会对画布的变换矩阵产生影响. 函数 方法 描 ...

  7. 用html5的canvas和JavaScript创建一个绘图程序

    本文将引导你使用canvas和JavaScript创建一个简单的绘图程序. 创建canvas元素 首先准备容器Canvas元素,接下来所有的事情都会在JavaScript里面. <canvas ...

  8. html5标签canvas函数drawImage使用方法

    html5中标签canvas,函数drawImage(): 使用drawImage()方法绘制图像.绘图环境提供了该方法的三个不同版本.参数传递三种形式: drawImage(image,x,y):在 ...

  9. 使用 JavaScript 和 canvas 做精确的像素碰撞检测

    原文地址:Pixel accurate collision detection with Javascript and Canvas 译者:nzbin 我正在开发一个需要再次使用碰撞检测的游戏.我通常 ...

随机推荐

  1. Ansible 使用普通用户远程执行playbook

    设置ansible使用普通用户jsxge远程连接执行playbook 1. ansible控制端创建普通用户jsxgecd /homeuseradd jsxgechown -R jsxge.wheel ...

  2. struts2:多业务方法的处理(动态调用,DMI)

    struts2支持调用指定Action类中某一个业务方法.如果没有指定,则调用execute方法. 1. 第一种实现方式,通过URL叹号参数 1.1 创建Action类,带多个方法 package c ...

  3. 2. RabbitMQ 服务器 之下载安装

    RabbitMQ服务器如何安装? RabbitMQ是一个AMQP(Advanced Message Queue,即高级消息队列协议)服务器 . 下载地址: RabbitMQ下载 安装说明:各平台下Ra ...

  4. 9-8-B树-查找-第9章-《数据结构》课本源码-严蔚敏吴伟民版

    课本源码部分 第9章  查找 - B树 ——<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接☛☛☛ <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集 ...

  5. linux下zip包处理

    先来看例子: zip命令可以用来将文件压缩成为常用的zip格式.unzip命令则用来解压缩zip文件. 1. 我想把一个文件abc.txt和一个目录dir1压缩成为yasuo.zip: # zip - ...

  6. windows下安装pycharm并连接Linux的python环境

    1. 下载安装Pycharm专业版 具体方法略.Pycharm5激活方法参考http://www.cnblogs.com/snsdzjlz320/p/7110186.html 2. 添加配置连接远程服 ...

  7. LeetCode: First Missing Positive 解题报告

    First Missing Positive Given an unsorted integer array, find the first missing positive integer. For ...

  8. 【Ubuntu】xrdp完美实现Windows远程访问Ubuntu 16.04

    步骤一.下载TigerVNC Server软件包 下载地址:Tigervnc Deb软件包(适用于Ubuntu 16.04.1 - 64位) 步骤二. 安装TigerVNC Server软件包 1.打 ...

  9. [转]RabbitMQ入门教程(概念,应用场景,安装,使用)

    原文地址:https://www.jianshu.com/p/dae5bbed39b1 RabbitMQ 简介 RabbitMQ是一个在AMQP(Advanced Message Queuing Pr ...

  10. 【九天教您南方cass 9.1】01 安装Cad和Cass9.1

    同学们大家好,欢迎收看由老王测量上班记出品的cass9.1视频课程 今后会将cass的教程目录定期发布在测量空间中. 我是本节课主讲老师九天. [点击索取cass教程]5元立得 (给客服说暗号:“老王 ...