- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Canvas 中恢复背景时遇到问题。我有一个 Canvas ,它可以根据选项的内容改变大小(它可以变得非常大),我在上面绘制图像,现在我想要一个指示器以类似网格的格式显示鼠标所在的位置。问题是绘制了红色框,但下次更改 curX
或 curY
时背景不会重新绘制。
我注意到一个奇怪的地方是,当我将鼠标移至黑色区域时,红色框似乎是深红色,但是当我在同一位置来回移动时,红色似乎变得更强。有时,我之前画的红框也会变得更强,而无需重新访问这些区域,就像一条正在形成的痕迹。
仅有时背景会返回,但通常是在我离开该区域时。
<canvas id="leveldraw" onmousemove="getMouse(event)" onmouseout="stopMouse()" width="0" height="0"></canvas>
...
var oldBlk = null;
...
function getMouse(e)
{
var offsetpos = recursive_offset(canvas);
var oldX = curX;
var oldY = curY;
mouseX = e.clientX + offsetpos.x + (canvas.offsetLeft/2);
mouseY = e.clientY + offsetpos.y + (canvas.offsetTop/2)+24;
curX = Math.floor(mouseX/24);
curY = Math.floor(mouseY/24);
if(oldX!=curX || oldY!=curY)
{
if(oldBlk != null)
ctx.putImageData(oldBlk,(oldX*24)-24,(oldY*24)-24);
oldBlk = ctx.getImageData((curX*24)-24,(curY*24)-24,72,72);
ctx.lineWidth="1";
ctx.strokeStyle="red";
ctx.rect(curX*24,curY*24,24,24);
ctx.stroke();
}
}
function stopMouse()
{
ctx.putImageData(oldBlk,(curX*24)-24,(curY*24)-24);
oldBlk = null;
}
recursive_offset()
:Get mouse position in scrollable div
我什至在整个 Canvas 上尝试过 getImageData,但这似乎不起作用。离开 Canvas 时,它可能确实恢复了整个背景,但是当我返回 Canvas 时,红色框又回来了。
最佳答案
在进行下一次绘图操作之前,您应该使用ctx.beginPath()
。调用 lines()
或 fill()
不会清除堆栈,并且下次会再次绘制,从而导致形成轨迹。
关于javascript - canvas - putImageData 并不总是有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35578378/
我有一个 ImageData 对象,它包含所有监视器的屏幕截图,因此它是一个巨大的 ImageData。我现在想每次画一个显示器。我有所有的显示器尺寸。 所以我正在尝试使用 ctx.putImageD
我使用以下函数更新 Canvas 元素的内容,其中 frame_data 是 width*height*3 的数组。 function updateCanvas(frame_data, width,
在 Canvas 中恢复背景时遇到问题。我有一个 Canvas ,它可以根据选项的内容改变大小(它可以变得非常大),我在上面绘制图像,现在我想要一个指示器以类似网格的格式显示鼠标所在的位置。问题是绘制
我正在从文件中读取 RGB 值并尝试将它们放在 Canvas 上。 我尝试了许多不同的循环和增量值变体。 JavaScript: function parseData(data) { var p
我想制作一个使用此方法的分形生成器:https://www.johndcook.com/blog/2017/07/08/the-chaos-game-and-the-sierpinski-triang
我有一个 Canvas ,背景中有一个大图像,前面有一个较小的圆形图像。我通过像这样使用剪辑实现了这种圆形图像效果 ctx.save(); ctx.beginPath(); ctx.arc(x,y,r
似乎某些图 block 不会被绘制。我将一个 tileset 拆分为 32x32 的正方形,并使用 2D 100x100 数组将 map 绘制到 Canvas 上。 然后它为播放器设置“视口(view
在 html5 中,当您使用 putImageData() 绘制到 Canvas 时,如果您正在绘制的某些像素是透明的(或半透明的),您如何保持 Canvas 中的旧像素不受影响? 示例: var i
我正在使用一个相对较大的 Canvas ,其中绘制了各种(复杂的)东西。然后我想保存 Canvas 的状态,以便稍后可以快速将其重置为现在的状态。我为此使用 getImageData 并将数据存储在变
我正在处理 Angular 项目,我必须将图像放在 Canvas 上。图片不是本地存储的,我只有图片数据所以我用这个。 this.context.putImageData(imgData, first
我对虚拟 Canvas 的概念不熟悉,知道为什么下面的代码不起作用吗? $(document).ready(function () { var
我有以下代码: var img = new Image(); canvas = document.getElementById("c"); ctx = canvas.getContext('2d')
我正在尝试使用一些自定义代码绘制一个等距正方形来构建像素数据,然后使用 putImageData 将其放在 Canvas 上。 但我没有得到预期的结果,在快速浏览 Canvas 的原始像素数据后,我发
除了分别使用 getImageData 和 putImageData 之外,是否还有另一种方法可以将像素区域从(比如说) Canvas A 复制到 Canvas B。 此外,当复制到 Canvas B
我正在尝试从 websocket 读取像素(逐帧)并将其渲染到 Canvas 上(灰度)。数据显示正常,只是当前帧的像素与前一帧重叠显示。因此,几帧后图片就会被弄脏。 我想在渲染当前帧之前清除前一帧。
我想使用 HTML5 Canvas 绘制图像,转换图像,然后更改图像但保留我所做的转换。这可能吗? 这里有一些伪代码来说明我的问题: // initially draw an image and tr
我认为 putImageData 比 drawImage 快,但我需要证明这一点。 我想这与 Flash 及其 Bitmap 和 BitmapData 类的情况相同。基本上,BitmapData 有助
我知道 ctx.globalcompositeoperation=source-over 在使用 drawimage 时有效,但它可以与 putimagedata 一起使用吗? 最佳答案 简短的回答是
我正在尝试在 Node 服务器上托管 NES 模拟器 ( JSNES )。我知道您可以使用 unpkg 将 JSNES 嵌入网页中,但我希望它在服务器上运行,因为我希望多个客户端共享相同的状态。我 编
我最近一直在观看 Notch 在 twitch 上的一些直播,并对他几年前在 Ludum Dare 挑战赛中使用的一种渲染技术很感兴趣。我尝试将他的 java 代码转换为 javascript,但遇到
我是一名优秀的程序员,十分优秀!