我想在HTML5画布/或SVG上执行以下操作:
我的问题是,我不知道如何检查抽屉线是否遵循路径。
有人能给我解释一下如何做到这一点,或者给我一些建议吗?
http://jsbin.com/reguyuxawo/edit?html,js,控制台,输出
function drawBgPath() {
context.beginPath();
context.moveTo(100, 20);
context.lineTo(200, 160);
context.quadraticCurveTo(230, 200, 250, 120);
context.bezierCurveTo(290, -40, 300, 200, 400, 150);
context.lineTo(500, 90);
context.lineWidth = 5;
context.strokeStyle = 'rgba(0,0,0,.2)';
context.stroke();
}
>
创建一个隐藏的画布,将源路径存储为问题画布,例如#q
。
将问题画在c上。
当用户即将绘制时,从问题中获取像素值,以查看其是否在一条线上。
根据以上信息确定绘图颜色。
var mousePressed = false;
var lastX, lastY;
var ctx;
var canvas = document.getElementById('c');
var context = canvas.getContext('2d');
var canvasq = document.getElementById('q');
var contextq = canvasq.getContext('2d');
canvas.width = 500;
canvas.height = 500;
canvasq.width = 500;
canvasq.height = 500;
$('#c').mousedown(function (e) {
mousePressed = true;
Draw(e.pageX - $(this).offset().left, e.pageY - $(this).offset().top, false);
});
$('#c').mousemove(function (e) {
if (mousePressed) {
Draw(e.pageX - $(this).offset().left, e.pageY - $(this).offset().top, true);
}
});
$('#c').mouseup(function (e) {
mousePressed = false;
});
$('#c').mouseleave(function (e) {
mousePressed = false;
});
function drawBgPath() {
contextq.beginPath();
contextq.moveTo(100, 20);
contextq.lineTo(200, 160);
contextq.quadraticCurveTo(230, 200, 250, 120);
contextq.bezierCurveTo(290, -40, 300, 200, 400, 150);
contextq.lineTo(500, 90);
contextq.lineWidth = 5;
contextq.strokeStyle = 'rgba(0,0,0,.2)';
contextq.stroke();
context.drawImage(canvasq, 0, 0);
}
function Draw(x, y, isDown) {
// If not integer, getImageData will get a 2x2 region.
x = Math.round(x);
y = Math.round(y);
if (isDown) {
var pixel = contextq.getImageData(x, y, 1, 1);
// If the canvas is not draw by line, the opacity value will be 0.
var color = (pixel.data[3] === 0) ? 'red' : 'purple';
context.beginPath();
context.strokeStyle = color;
context.lineWidth = 5;
context.lineJoin = "round";
context.moveTo(lastX, lastY);
context.lineTo(x, y);
context.closePath();
context.stroke();
}
lastX = x; lastY = y;
}
drawBgPath();
Draw();
css prettyprint-override">#q {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<canvas id="c"></canvas>
<canvas id="q"></canvas>
在地图“画区”工具里选择“沿路画区”,按照沿路节点标绘,会自动按照线路生成区划 每点击一个节点,自动计算距离 区划生成后,可以在右侧详情框填写信息,点击“保存”按钮保存,或者点击地图空白处保存
2D 绘制上下文支持很多在画布上绘制路径的方法。通过路径可以创造出复杂的形状和线条。要绘制路径,首先必须调用beginPath()方法,表示要开始绘制新路径。然后,再通过调用下列方法来实际地绘制路径。 arc(x, y, radius, startAngle, endAngle, counterclockwise):以(x,y)为圆心绘制一条弧线,弧线半径为radius,起始和结束角度(用弧度表示
下面的问题有人给我提示吗? 我想画一个填充的路径(画布),其中有一个洞。在SVG中,路径定义如下:
所以我目前正在建立儿童涂色书应用程序。我想限制绘制区域,这样它只能在选定的区域绘制路径。例如,如果我触摸了喇叭,那么绘制区域只是喇叭边框内的空间。目前,我只能在位图中绘制路径(绘制区域不受限制)。 第一张图片:触摸区域。 第二张图片:用户只能在蓝色空间内绘制路径。 有没有什么办法让我可以使绘制区域限制在触摸/选定的区域?如有任何帮助,不胜感激,谢谢!
问题内容: 我想只使用具有svg / canvas和jsmax的css来动画化线条的渐进绘图。我想画的线的想法可以在这里找到 问题答案: 此答案中列出了三种技术: 有一个全SVG解决方案,涉及逐步修改形状以绘制越来越长的“破折号”,然后是巨大的空白。 演示:[http](http://phrogz.net/svg/progressively-drawing-svg-path-via- dashar
本文向大家介绍C#画笔Pen使用路径绘制图形的方法,包括了C#画笔Pen使用路径绘制图形的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#画笔Pen使用路径绘制图形的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的C#程序设计有所帮助。