Javascript 将画布划分为独立的空间
有没有一种方法可以将画布标记分隔成几个独立的空间,这样就可以为每个空间获得独立的2d上下文和独立的坐标。Javascript 将画布划分为独立的空间,javascript,html,canvas,Javascript,Html,Canvas,有没有一种方法可以将画布标记分隔成几个独立的空间,这样就可以为每个空间获得独立的2d上下文和独立的坐标。 例如,如果我想两次绘制同一幅画,我可以将画布分成相等的部分,并在每个部分中使用相同的函数。我认为在单个画布中用数学方法创建独立的上下文并不困难。例如,假设您有一个1000 x 500的画布,您希望将其分成两个并排的500 x 500区域。让您的所有函数调用都使用一个面积参数,然后使用一个简单的计算来调整x坐标,具体取决于您使用的面积。大概是这样的: function drawLine(fro
例如,如果我想两次绘制同一幅画,我可以将画布分成相等的部分,并在每个部分中使用相同的函数。我认为在单个画布中用数学方法创建独立的上下文并不困难。例如,假设您有一个1000 x 500的画布,您希望将其分成两个并排的500 x 500区域。让您的所有函数调用都使用一个面积参数,然后使用一个简单的计算来调整x坐标,具体取决于您使用的面积。大概是这样的:
function drawLine(fromX, fromY, toX, toY, area) {
var startX = fromX + (area * 500);
var startY = fromY;
var endX = fromX + (area * 500);
var endY = fromY;
// draw your line here
}
在这种情况下,当使用左侧区域时,您将对右侧框使用area=0和area=1。我认为在单个画布中以数学方式创建独立上下文并不困难。例如,假设您有一个1000 x 500的画布,您希望将其分成两个并排的500 x 500区域。让您的所有函数调用都使用一个面积参数,然后使用一个简单的计算来调整x坐标,具体取决于您使用的面积。大概是这样的:
function drawLine(fromX, fromY, toX, toY, area) {
var startX = fromX + (area * 500);
var startY = fromY;
var endX = fromX + (area * 500);
var endY = fromY;
// draw your line here
}
在这种情况下,当使用左侧区域时,您将使用area=0和area=1作为右侧框。我使用peachykeen的建议,创建了两个屏幕外画布,然后将它们作为图像放置在原始画布中,代码如下所示:
canvas1 = document.createElement("canvas");
canvas2 = document.createElement("canvas");
//Draw on the canvases
Drawing code
//Add them to the original canvas
if (OriginalCanvas && OriginalCanvas.getContext) {
var context = OriginalCanvas.getContext('2d');
if (context) {
context.drawImage(canvas1, 0, 0, OriginalCanvas.width / 2, OriginalCanvas.height);
context.drawImage(canvas2, OriginalCanvas.width / 2, 0, OriginalCanvas.width / 2, OriginalCanvas.height);
}
}
我使用peachykeen的建议,创建了两个屏幕外画布,然后将它们作为图像放置在原始画布中,代码如下所示:
canvas1 = document.createElement("canvas");
canvas2 = document.createElement("canvas");
//Draw on the canvases
Drawing code
//Add them to the original canvas
if (OriginalCanvas && OriginalCanvas.getContext) {
var context = OriginalCanvas.getContext('2d');
if (context) {
context.drawImage(canvas1, 0, 0, OriginalCanvas.width / 2, OriginalCanvas.height);
context.drawImage(canvas2, OriginalCanvas.width / 2, 0, OriginalCanvas.width / 2, OriginalCanvas.height);
}
}
我不能控制html,只能控制javascript部分,因此我不能有两个canvaseDocument.createElementcanvas;您可以使用Javascript创建一个新画布。不更改可见HTML的最佳解决方案是创建两个或多个屏幕外画布,并将其用作中间纹理。对其中一个或多个执行所有绘制,然后将其绘制到可见画布。这也允许你将图像平铺到一个屏幕外的画布上,然后多次绘制到可见的画布上。有关更多信息,请参阅。我无法控制html,只能控制javascript部分,因此我不能有两个画布Document.createElementcanvas;您可以使用Javascript创建一个新画布。不更改可见HTML的最佳解决方案是创建两个或多个屏幕外画布,并将其用作中间纹理。对其中一个或多个执行所有绘制,然后将其绘制到可见画布。这也允许你将图像平铺到一个屏幕外的画布上,然后多次绘制到可见的画布上。有关更多信息,请参阅。对于非常简单的应用程序,这确实有效。然而,当您介绍在提供原始坐标笔划、缩放、变换之外发生的任何事情时,您会遇到问题。画布不会阻止您在一个部分之外绘制。使用中间曲面确实可以,但性能略有下降。对于非常简单的应用程序,这是可行的。然而,当您介绍在提供原始坐标笔划、缩放、变换之外发生的任何事情时,您会遇到问题。画布不会阻止您在一个部分之外绘制。使用中间曲面会导致性能下降。