繁体   English   中英

如何使用 canvas JavaScript 在图像的 4 个角上绘制三角形

[英]How can I draw triangle on 4 corner of image using canvas JavaScript

我在图像的角上绘制矩形。 为此,我使用的是 JavaScript。 在这里,我从 canvas 获取图像数据。

// Get image data
let imgData = ctx.getImageData(0, 0, canvas.width, canvas.height);
let arr = imgData .data;

我发现 n 是三角形相邻和相反的长度。

var n;
if (width > height) {
    n = height / 20;
} else {
    n = width / 20;
}

在这里,我使用这些循环在图像左上角的背景中绘制红色三角形。

for (let y = 0; y < n; y++) {
for (i = y * imgData.width * 4; i < ((y * imgData.width * 4) + (n * 2)) - y; i = i + 4) {
        arr[i] = 255;
        arr[i + 1] = 0;
        arr[i + 2] = 0;
    }
  }

这是我得到的 output。 画布图像输出

我预期的 output。 [预期产出2

我被图像左上角的第一个三角形卡住了。 我试图调试循环,但找不到错误。 你能帮我找出错误吗?

图片参考: http://webgl-workshop.com/assets/e826db271aa3c03c69c4aca1e20abf5b.jpg

以下是您如何编写代码来完成此绘图任务

在.html,参考你的canvas with id="canvas"

在.js 文件中,输入以下代码。 它绘制左上角。 对其他 3 个角进行类似操作。

让我知道你是否成功。 享受:) !

var canvasElement = document.querySelector("#canvas");
var ctx = canvasElement.getContext("2d");
var n = 50; //default at 50px edge length

var triangle = {
    x1: 0, 
    y1: 0, 
    x2: 50, 
    y2: 0, 
    x3: 0, 
    y3: 50 
}

ctx.strokeStyle = 'red';

ctx.beginPath();
ctx.moveTo(triangle.x1, triangle.y1);
ctx.lineTo(triangle.x2, triangle.y2);
ctx.lineTo(triangle.x3, triangle.y3);
ctx.closePath();
ctx.stroke();

// the fill color
ctx.fillStyle = "#FF0000"; //or 'red'
ctx.fill();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM