将一个画布绘制到另一个不起作用的画布上
Draw a canvas into another canvas not working
我正试图在另一个画布上绘制一个通过javascript创建的画布。但这对我不起作用,
这是我的代码,
<!DOCTYPE HTML>
<html>
<head>
</script>
<script>
window.onload = function(){
var can1 = document.createElement('canvas');
can1.width = 150;
can1.height = 140;
can1.style.cssText = 'top:2px;left:2px;border:2px solid black;';
var ctx1 = can1.getContext('2d');
var img=new Image();
img.src="images/211.jpg"
ctx1.drawImage(img,0,0);
var can = document.getElementById("c");
var ctx = can.getContext('2d');
ctx.drawImage(can1,0,0);
var canvas = document.getElementById("c");
window.open(canvas.toDataURL());
}
</script>
</head>
<body >
<canvas id="c" style = "position:absolute;top:150px;width:250px;height:350px;left:500px; border:2px solid black;"></canvas>
</body>
</html>
我认为问题是,当您试图将该图像绘制到画布中时,图像还没有准备好。因此,如果你这样做,它会完美地工作:
<!DOCTYPE HTML>
<html>
<head>
<style>
body {
margin: 0px;
padding: 0px;
}
#myCanvas {
border: 1px solid #9C9898;
}
</style>
<script>
window.onload = function() {
var imageObj = new Image();
imageObj.src = "http://www.html5canvastutorials.com/demos/assets/darth-vader.jpg";
var dynamicCanvas = document.createElement("canvas");
var dynamicContext = dynamicCanvas.getContext("2d");
dynamicCanvas .height="400";
dynamicCanvas.width="578";
var canvas = document.getElementById("myCanvas");
var context = canvas.getContext("2d");
imageObj.onload = function() {
dynamicContext.drawImage(imageObj, 69, 50);
context=context.drawImage(dynamicCanvas,69,50);
window.open(canvas.toDataURL());
};
};
</script>
</head>
<body>
<canvas id="myCanvas" width="578" height="400"></canvas>
</body>
</html>
并且您可以调整动态画布的高度和宽度。
如果你去掉window.open语句,它就完美了。
但是canvas.toDataURL()
有问题
当你尝试为本地文件执行canvas.toDataURL()
时,它会给出一个安全错误(如果你通过googlechrome检查它),即
Uncaught Error: SECURITY_ERR: DOM Exception 18
您可以在此处了解有关此错误的更多信息(看看你是否收到了这个错误)。不管怎样,根本原因已经解决了,现在又出现了一个新问题:D。。不管怎样,祝你好运!!
使用MJQ的原始代码显示不正确的图像的问题是,他没有直接通过属性来说明第二个画布的大小,只通过样式来说明。因此,浏览器创建了一个默认大小的画布(FF为300x150),然后将其拉伸到250x350。
因此,以下修改将解决图像显示问题:
<canvas id="c" width="250" height="350" style = "position:absolute;top:150px;width:250px;height:350px;left:500px; border:2px solid black;"></canvas>
也许这对将来的某个人会有所帮助。
你在想什么?您的代码正在工作。
(如果我答对了你的问题)我在后面加了以下几行
can1.style.cssText='border:2px solid black;';
:
var ctx1 = can1.getContext('2d');
ctx1.rect(50, 50, 500, 500);
ctx1.fillStyle = '#8ED6FF';
ctx1.fill();
执行死刑时,我看到里面有一个美丽的矩形!!你在使用支持html5的浏览器吗??
相关文章:
- 嵌套到另一个函数中的Fancybox函数;不起作用
- 另一个Ajax函数触发的Ajax函数不起作用
- 我正在创建一个聊天,但每次我发送消息时,它都不会让我再发送另一条消息,就像表格一样;不起作用
- 复选框一次选中一个不起作用
- JavaScript:两个相同的函数,一个不起作用
- 在页面中使用了两次多个图像上传,但第一个正在工作,另一个不起作用
- 引导分页下一个上一个不起作用
- 当我在一个html页面上添加两个脚本时,其中一个不起作用
- 将一个画布绘制到另一个不起作用的画布上
- L.DomEvent.addListener()与on():为什么一个不起作用
- JQuery从$(this)获取id不起作用,但获取另一个属性起作用
- javascript:动态添加一个不起作用的属性
- 将鼠标悬停时的按钮替换为另一个不起作用的按钮jQuery
- 我有两个具有相同代码的不同域,但其中一个不起作用.为什么
- 未捕获的引用错误——一个函数工作而另一个不起作用
- 按钮点击功能不起作用,而另一个不起作用
- Javascript _map () vs array.map();为什么一个在这里起作用而另一个不起作用
- ScrollTop等于一个不起作用的值
- jquery.load()将一个html文件包含到另一个不起作用的文件中
- 将动态值从onclick传递给另一个不起作用的javascript函数