canvas 相关问题

Canvas是自由格式图形输出的通用元素。

页面无法使用lib GSAP 正常渲染动画图像

我在滚动图片时做了动画,剪下了很多一帧一帧的图片并做了动画,但是问题来了,加载页面时没有图片,只有滚动时才会出现...

回答 1 投票 0

缩放画布元素并保持纵横比

我有一个简单的 html5 页面,其中有一个特定大小的画布元素。现在我希望画布元素始终根据页面的可用大小进行缩放,但仍保持一定的纵横比。 一个...

回答 2 投票 0

将 HTML 画布裁剪为其可见像素(内容)的宽度/高度?

HTML canvas 元素可以在内部裁剪以适合其内容吗? 例如,如果我有一个 500x500 像素的画布,其中的随机位置只有一个 10x10 像素的正方形,是否有一个函数

回答 3 投票 0

如何使用object-fit将鼠标位置转换为画布坐标:contain

使用 object-fit: contains 允许调整画布大小以适合容器。 此代码片段使用鼠标事件位置绘制一个圆: 画布宽度=1920; 画布高度=1200; const ctx=画布。

回答 1 投票 0

html5 画布旋转轮不停止在获胜颜色

我正在尝试使用canvas和html5创建一个旋转轮。它有效,但我的最终目标是尝试将箭头指向确切的获胜颜色。例如,如果获胜颜色是绿色......

回答 1 投票 0

Phaser 画布上的 Dom 元素

我可以只在画布上制作选择性的 DOM 元素,而不是所有 DOM 元素吗? 我尝试在谷歌上搜索,但到处的答案都不清楚,但有些“否”。我只有基本的

回答 1 投票 0

如何使用 JavaScript 将画布大小调整为像素数量

我正在尝试将画布宽度调整为给定的像素量,如下所示: 如果(条件==真){ canvasVar.width = 像素数量; } if 语句正在执行,但是画布正在调整大小...

回答 1 投票 0

HTML 使用 html2canvas 进行图片

我正在尝试使用 html2canvas 将 HTML 转换为图片。问题是阿拉伯字符没有正确转换! ...

回答 3 投票 0

Tkinter 画布缩放 + 移动/平移

Tkinter 的画布小部件具有以下内置功能: 使用 canvas.scan_mark 和 canvas.scan_dragto 移动/平移画布(例如通过单击+拖动),请参阅此问题 缩放

回答 4 投票 0

求自己画的图形占图形面积的百分比

有简单形状(红色三角形)和复杂形状(黑色“U 形”)。 我用鼠标绘制蓝色形状并愿意找到:被绘图覆盖的图形的百分比(蓝色)。 有简单形状(红色三角形)和复杂形状(黑色“U 形”)。 我用鼠标绘制蓝色形状并愿意找到:被绘图覆盖的图形的百分比(蓝色)。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Canvas</title> <style> canvas { border: 1px solid black; } </style> </head> <body> <canvas id="canvas" width="800" height="600"></canvas> <script> const canvas = document.getElementById("canvas"); const ctx = canvas.getContext("2d"); const radius = 15; const random_shape = [ { x: 20, y: 20, width: 20, height: 100 }, { x: 60, y: 20, width: 20, height: 100 }, { x: 20, y: 120, width: 60, height: 20 }, ]; const triangle = [ { x: 200, y: 400 }, { x: 400, y: 200 }, { x: 600, y: 400 }, ]; let isDrawing = false; let lastX = 0; let lastY = 0; let pixelsInsideFigure = 0; function draw_random_shape() { for (let i = 0; i < random_shape.length; i++) { ctx.fillStyle = "black"; ctx.fillRect( random_shape[i].x, random_shape[i].y, random_shape[i].width, random_shape[i].height ); } } function draw_triangle() { ctx.beginPath(); ctx.moveTo(triangle[0].x, triangle[0].y); for (let i = 1; i < triangle.length; i++) { ctx.lineTo(triangle[i].x, triangle[i].y); } ctx.closePath(); ctx.fillStyle = "red"; ctx.fill(); } function handleMouseDown(e) { isDrawing = true; [lastX, lastY] = [e.offsetX, e.offsetY]; if (pointInShape({ x: lastX, y: lastY }, random_shape)) { pixelsInsideFigure++; } } function handleMouseMove(e) { if (!isDrawing) return; ctx.strokeStyle = "blue"; ctx.lineJoin = "round"; ctx.lineCap = "round"; ctx.lineWidth = radius; ctx.beginPath(); ctx.moveTo(lastX, lastY); ctx.lineTo(e.offsetX, e.offsetY); ctx.stroke(); [lastX, lastY] = [e.offsetX, e.offsetY]; if (pointInShape({ x: lastX, y: lastY }, random_shape)) { pixelsInsideFigure++; } } function handleMouseUp() { isDrawing = false; calculatePercentage(); pixelsInsideFigure = 0; } function clearUserInput() { ctx.clearRect(0, 0, canvas.width, canvas.height); draw_triangle(); draw_random_shape(); } function calculatePercentage() { const coveredArea = calculateCoveredArea( { x: lastX, y: lastY }, radius ); const totalArea = Math.PI * Math.pow(radius, 2); const coveragePercentage = (coveredArea / totalArea) * 100; alert(`Area Coverage Percentage: ${coveragePercentage.toFixed(2)}%`); clearUserInput(); } function pointInShape(point, vertices) { let inside = false; const x = point.x; const y = point.y; for (let i = 0, j = vertices.length - 1; i < vertices.length; j = i++) { const xi = vertices[i].x; const yi = vertices[i].y; const xj = vertices[j].x; const yj = vertices[j].y; const intersect = yi > y != yj > y && x < ((xj - xi) * (y - yi)) / (yj - yi) + xi; if (intersect) inside = !inside; } return inside; } function calculateCoveredArea(point, radius) { let coveredArea = 0; const centerX = point.x; const centerY = point.y; for (let x = centerX - radius; x <= centerX + radius; x++) { for (let y = centerY - radius; y <= centerY + radius; y++) { const distance = Math.sqrt( Math.pow(x - centerX, 2) + Math.pow(y - centerY, 2) ); if (distance <= radius) { if (pointInShape({ x: x, y: y }, random_shape)) { console.log("INSIDE RANDOM SHAPE"); coveredArea++; } if (pointInShape({ x: x, y: y }, triangle)) { console.log("INSIDE Triangle"); coveredArea++; } } } } return coveredArea; } function calculateArea(vertices) { let area = 0; for (let i = 0, j = vertices.length - 1; i < vertices.length; j = i++) { area += (vertices[j].x + vertices[i].x) * (vertices[j].y - vertices[i].y); } return Math.abs(area / 2); } function init() { draw_triangle(); draw_random_shape(); canvas.addEventListener("mousedown", handleMouseDown); canvas.addEventListener("mousemove", handleMouseMove); canvas.addEventListener("mouseup", handleMouseUp); } init(); </script> </body> </html> 附注作为《哈利·波特 1》中的参考,我必须引导一根魔杖来适应形状。要通过技能,您必须正确覆盖该区域。 在提供的情况下,我预计能达到 60-70% 左右(左上角)。 在互联网上搜索,询问“机器人”,进行数学调整 - 没有帮助。 期望:计算和查找面积百分比的正确方法。 我首先想到的是,您可以计算用户绘制后显示的总像素,然后您可以与目标形状像素数进行比较。只是一个想法

回答 1 投票 0

使用 HTML5 画布实现更高 DPI 图形

使用 HTML5 画布创建图像时是否可以设置自定义 DPI/PPI?我知道如何在画布上绘制并将其导出为图像,但如何确保输出图像是 c...

回答 5 投票 0

从玩家向鼠标发射子弹?

如何从玩家 X 和 Y 向鼠标 x 和 y 发射子弹? 我可以找到鼠标 X 和 Y 的角度,但我不知道如何创建一颗飞向鼠标的子弹。 该...

回答 3 投票 0

剪辑SpriteComponent的某些部分

我使用 SpriteComponent 加载了全屏图像,并尝试使用 canvas.clipPath 删除该图像的某些部分。 预期:除所有剪切部分外,图像将被渲染 问题:...

回答 1 投票 0

如何将内联 svg(在 DOM 中)绘制到画布上?

嗯,我需要一些有关将 .svg 文件/图像转换为 .png 文件/图像的帮助... 我的页面上显示了 .svg 图像。它保存在我的服务器上(作为 .png 文件)。我需要将其转换为

回答 3 投票 0

为什么当我在旁边打开 python 文件时,它说找不到该模块?

所以,我有一个名为“多个动画”的 python 文件和一个名为“球”的文本。我想将我的 python 文件 Ball 导入到我的多个动画文件中。但这就是我的术语...

回答 2 投票 0

sharp 包不适用于canvas nodejs

const { createCanvas, loadImage } = require('canvas') const 锐利 = require("锐利"); 这是我的代码。 抛出新错误(help.join(' ')); ^ 错误: 安装时出了点问题...

回答 1 投票 0

onkeydown 事件在画布上不起作用?

我有一个画布和一个分配给它的 onkeydown 事件。当按下任意键时,控制台应该记录该键的 keyCode。但它没有输出任何内容,甚至没有输出未定义的内容。其他

回答 1 投票 0

canvas 中是否有一个 Javascript 函数可以随机定位一个正方形,使得特定点 (x,y) 位于其中?

这是一个游戏。我正在使用画布绘制一个正方形,我希望该正方形在画布上随机放置,但仍包含玩家开始的点 (x,y)。我遇到麻烦了

回答 1 投票 0

如何在html5中制作透明画布?

如何使画布透明?我需要这样做,因为我想将两块画布叠在一起。

回答 9 投票 0

用于调整画布大小的 JavaScript 事件

更改画布的尺寸似乎会清除该画布上已完成的所有绘图。 是否有在画布调整大小时触发的事件,以便我可以挂钩它并在发生时重新绘制?

回答 6 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.