【问题标题】:JavaScript canvas drawImage not working properly [duplicate]JavaScript画布drawImage无法正常工作[重复]
【发布时间】:2018-09-22 15:48:00
【问题描述】:

我正在尝试绘制图像的一部分,但它无法正常工作。 当我尝试使用它时,宽度和高度与原来的不一样。

这是我的代码

window.onload = function() {
ImageObjSketch = new Image(); // URL
ImageObjSketch.src = 'https://i.imgur.com/75lATF9.png';

canvasClone = document.getElementById("squareTarget");
ctxClone = canvasClone.getContext("2d");
ctxClone.drawImage(ImageObjSketch,34,119,16,16,0,0,38,38);
}
#squareTarget {
	width: 38px; height: 38px;
	position: relative;
	right: 0px;
	display: inline-block;
	border: 1px #000000 solid;
}
<canvas id="squareTarget"></canvas>

正如你所见,它与正方形不成比例,尽管我设置了正方形的完整大小。

另一个问题,如您所见,您必须运行此代码两次才能看到图像,这是为什么呢?

【问题讨论】:

  • 你没有包含你的代码。
  • codepen.io 的链接必须附有代码。请使用代码工具栏按钮或 CTRL+K 键盘快捷键将所有代码缩进 4 个空格。 — 它在发布之前对你大喊大叫……
  • @Veluria & Pogrindis 我刚刚修好了。
  • @Pogrindis 我检查了一下,它没有解决我的问题。

标签: javascript html5-canvas drawimage


【解决方案1】:

您需要明确指定画布的大小。 然后就可以得到 2d Context:

window.onload = function() {
var ImageObjSketch = new Image(); // URL
ImageObjSketch.src = 'https://i.imgur.com/75lATF9.png';

var canvasClone = document.getElementById("squareTarget");
  canvasClone.width = 38;
  canvasClone.height = 38;
  ctxClone = canvasClone.getContext("2d");


ctxClone.drawImage(ImageObjSketch, 34,119,16,16,0,0,38,38);
}

然后你的尺寸是 38,但你应该使用文档的高度和宽度,但这是一个重构。

类似:

ctxClone.drawImage(ImageObjSketch, 34,119,16,16,0,0,canvasClone.width,canvasClone.height);

https://codepen.io/anon/pen/KoYbzm

【讨论】:

  • 所以我认为问题发生在我身上是因为画布没有宽度和高度属性?另一个问题,为什么代码需要第二次刷新?我的意思是,在您刷新页面之前,它不会在第一次运行时显示图像。
  • 不确定,可能会考虑使用不同的事件document.addEventListener('DOMContentLoaded', function() { // your code here }, false);
猜你喜欢
  • 2020-02-26
  • 2014-12-20
  • 2012-10-10
  • 1970-01-01
  • 2013-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-22
相关资源
最近更新 更多