【发布时间】:2018-10-12 15:36:05
【问题描述】:
我正在尝试将通过 KonvasJS 动态添加到画布的图像直接居中。
这是小提琴:
http://jsfiddle.net/71Lw0bk8/7/
我已经弄清楚了代码,但它没有使用 Konva,这是在没有库的情况下尝试这样做,并且它运行良好。
function addImage(imgUrl) {
const img = new Image();
img.onload = function () {
var padding = 20;
while (img.width + padding > canvas.width || img.height + padding > canvas.height) {
if (img.width + padding > canvas.width) {
let newWidth = canvas.width - (padding * 2);
img.height = Math.round((img.height / img.width) * newWidth);
img.width = newWidth;
}
else if (img.height + padding > canvas.height) {
let newHeight = canvas.height - (padding * 2);
img.width = Math.round((img.width / img.height) * newHeight);
img.height = newHeight;
}
}
ctx.drawImage(img, canvas.width / 2 - img.width / 2, canvas.height / 2 - img.height / 2, img.width, img.height);
};
img.src = imgUrl;
}
我只是不确定如何将其转换为此处:
var uploadedImage = new Konva.Image({
x: stage.getWidth() / 2,
y: stage.getHeight() / 2,
width: 200,
height: 200,
...
我该怎么做?
【问题讨论】:
-
我认出了那张图片 - 这是 konvajs 版本的带有变换的图像拖动图像吗?欢迎回来!
-
是的,Vanquided,谢谢你的建议,它比 Fabric 更容易理解,虽然我还是有点迷茫!哈
-
你创建一个标准的 js 图像并分配它的 src。然后在 onload 事件中创建 Konva.Image。此处的示例konvajs.github.io/docs/shapes/Image.html - 因此它与您在上面的纯 JS 代码示例中的内容非常相似,但将 ctx.drawImage() 替换为 Konva.Image 的创建。并且不要忘记 layer.draw()。
-
@VanquiishedWombat 介意做一个例子小提琴吗?我完全迷路了。
标签: javascript jquery html canvas konvajs