【发布时间】:2016-07-31 16:20:50
【问题描述】:
嘿,我在画布中创建了一个三角形,我使用了 2 种方法: main 方法:createTriangle 调用了 3 次 createInterval。 三角形仅由 3 个顶点组成。 现在我想为当前画布添加缩放选项。 放大和缩小,但我不知道从哪里开始? 问题从这样一个事实开始,我没有当前三角形的任何中心点并且O不知道如何计算它。
任何指导都会有所帮助:)。
更新
可以在画布上安装的指令或库怎么样?
$(function() {
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
//define triangle vertices: 3 vertices for one triangle.
var ver0 = {
x: 114,
y: 366
};
var ver1 = {
x: 306,
y: 30
};
var ver2 = {
x: 498,
y: 366
}
var triangle = [ver0, ver1, ver2]
drawTriangle(triangle);
function drawTriangle(triangle) {
console.log('drawTriangle', triangle);
var v0 = triangle[0];
var v1 = triangle[1];
var v2 = triangle[2];
ctx.beginPath();
createInterval(v0, v1);
createInterval(v1, v2);
createInterval(v0, v2);
ctx.closePath();
}
function createInterval(point1, point2) {
console.log('createInterval', point1, point2);
ctx.moveTo(point1.x, point1.y);
ctx.lineTo(point2.x, point2.y);
ctx.strokeStyle = "black";
ctx.stroke();
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<canvas id="canvas" width=650 height=500></canvas>
【问题讨论】:
-
我已经编辑了我的答案以纠正一个错误......我忘记将 X 和 Y 的总和除以顶点数。使用计算出的
zoomX, zoomY作为缩放焦点。context.translate到缩放点并将多边形重新绘制到所需的缩放大小(大或更小)。context.scale使缩放更容易。 -
github.com/epistemex/transformation-matrix-js,见方法
fromTriangles()
标签: javascript css angularjs html canvas