有没有相当于在js中绘制位图
is there a equivalent to drawing on a bitmap in js
在 C# 中,您可以创建位图,在其上绘制,然后可以绘制那些缓存的位图。
public Form1()
{
InitializeComponent();
surface = new Bitmap(640, 480);
var g = Graphics.FromImage(surface);
g.DrawRectangle(Pens.Red, 10, 10, 10, 10);
}
Bitmap surface;
private void Form1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawImage(surface, 0, 0);
}
在 javascript 中有没有办法做到这一点?
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
ctx.beginPath();
ctx.arc(95,50,40,0,2*Math.PI);
ctx.stroke();
<canvas id="myCanvas" width="200" height="100" style="border:1px solid #d3d3d3;">
Your browser does not support the HTML canvas tag.</canvas>
您可以将该绘图缓存为 png 或 jpeg base64 字符串,然后您可以将其放入任何图像标签或其他 canvas。在这里,我将该图像缓存在 png 数据中并绘制在下面的图像标签上:
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
ctx.beginPath();
ctx.arc(95,50,40,0,2*Math.PI);
ctx.stroke();
var dt = c.toDataURL('image/png');
CANVAS_DATA.src = dt;
<canvas id="myCanvas" width="200" height="100" style="border:1px solid #d3d3d3;">
Your browser does not support the HTML canvas tag.</canvas>
<img id="CANVAS_DATA">
如果您需要更多信息,请询问。
Canvas 是可绘制的图像。
函数的CanvasRenderingContext2D.drawImage() first argument is an image or more specifically a CanvasImageSource which includes the HTMLCanvasElement.
例子
示例在 can1
上绘制弧线,然后使用 drawImage
.
在 can2
上绘制 can1
注意它画的是像素,第二次画的时候路径没有重绘canvas.
注意 canvas 是“双缓冲”的,这意味着您还可以将 canvas 绘制到自身
var ctx1 = can1.getContext("2d");
var ctx2 = can2.getContext("2d");
ctx1.beginPath();
ctx1.arc(64, 64, 60, 0, 2 * Math.PI);
ctx1.stroke();
ctx2.drawImage(can1, 0, 0);
canvas { border: 1px solid black}
<canvas id="can1" width="128" height="128"></canvas>
<canvas id="can2" width="128" height="128"></canvas>
在 C# 中,您可以创建位图,在其上绘制,然后可以绘制那些缓存的位图。
public Form1()
{
InitializeComponent();
surface = new Bitmap(640, 480);
var g = Graphics.FromImage(surface);
g.DrawRectangle(Pens.Red, 10, 10, 10, 10);
}
Bitmap surface;
private void Form1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawImage(surface, 0, 0);
}
在 javascript 中有没有办法做到这一点?
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
ctx.beginPath();
ctx.arc(95,50,40,0,2*Math.PI);
ctx.stroke();
<canvas id="myCanvas" width="200" height="100" style="border:1px solid #d3d3d3;">
Your browser does not support the HTML canvas tag.</canvas>
您可以将该绘图缓存为 png 或 jpeg base64 字符串,然后您可以将其放入任何图像标签或其他 canvas。在这里,我将该图像缓存在 png 数据中并绘制在下面的图像标签上:
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
ctx.beginPath();
ctx.arc(95,50,40,0,2*Math.PI);
ctx.stroke();
var dt = c.toDataURL('image/png');
CANVAS_DATA.src = dt;
<canvas id="myCanvas" width="200" height="100" style="border:1px solid #d3d3d3;">
Your browser does not support the HTML canvas tag.</canvas>
<img id="CANVAS_DATA">
如果您需要更多信息,请询问。
Canvas 是可绘制的图像。
函数的CanvasRenderingContext2D.drawImage() first argument is an image or more specifically a CanvasImageSource which includes the HTMLCanvasElement.
例子
示例在 can1
上绘制弧线,然后使用 drawImage
.
can2
上绘制 can1
注意它画的是像素,第二次画的时候路径没有重绘canvas.
注意 canvas 是“双缓冲”的,这意味着您还可以将 canvas 绘制到自身
var ctx1 = can1.getContext("2d");
var ctx2 = can2.getContext("2d");
ctx1.beginPath();
ctx1.arc(64, 64, 60, 0, 2 * Math.PI);
ctx1.stroke();
ctx2.drawImage(can1, 0, 0);
canvas { border: 1px solid black}
<canvas id="can1" width="128" height="128"></canvas>
<canvas id="can2" width="128" height="128"></canvas>