在框中重新定位图像
reposition image within a box
>我需要一些指示来上传图像,然后提供拖动图像的功能,以便它适合另一个图像形状。 这是我到目前为止所拥有的:
http://goehints.com/public/<--上传任何图片点击提交后,我可以使用顶部图像进行选择和裁剪 - 但我想直接在十六进制形状内调整大小/重新定位。 有什么建议吗?
我相信所有代码都可以从源代码查看,否则请告诉我,谢谢!
您可以只使用画布及其"剪辑"操作:
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
var img = document.createElement("img");
var imgpos = { x:0, y:0, scale: 1.0 };
function redraw() {
canvas.width = canvas.width;
ctx.strokeStyle = "#000";
ctx.lineWidth = 4;
ctx.beginPath();
for (var i=0; i<6; i++) {
var t = 2*Math.PI*(i+0.5)/6;
var x = 200 + 200*Math.cos(t);
var y = 200 + 200*Math.sin(t);
if (i == 0) ctx.moveTo(x, y); else ctx.lineTo(x, y);
}
ctx.closePath();
ctx.save();
ctx.clip();
ctx.translate(imgpos.x, imgpos.y);
ctx.scale(imgpos.scale, imgpos.scale);
ctx.drawImage(img, 0, 0);
ctx.restore();
ctx.stroke();
ctx.fillStyle = "#F00";
}
我基本上是绘制裁剪到六边形的图像,然后我还绘制六边形边框。图像也是在应用平移/缩放转换后绘制的。
这允许您在页面中动态执行所有缩放/裁剪,而无需在服务器端执行任何操作:
img.onload = redraw;
img.src = "cube.jpg";
var tracking = null;
canvas.onmousedown = function(event){
event.preventDefault(); event.stopPropagation();
var x = event.x, y = event.y;
canvas.onmousemove = function(event) {
event.preventDefault(); event.stopPropagation();
imgpos.x += event.x - x;
imgpos.y += event.y - y;
x = event.x; y = event.y;
redraw();
};
canvas.onmouseup = function() {
canvas.onmouseup = canvas.onmousemove = null;
};
};
canvas.onmousewheel = function(event) {
var d = event.wheelDelta;
while (d >= 120) {
imgpos.scale *= 1.1;
d -= 120;
}
while (d <= -120) {
imgpos.scale /= 1.1;
d += 120;
}
redraw();
};
您可以在此处看到它的工作。
相关文章:
- 如何在容器中定位旋转的图像
- 在CSS中重叠相对定位的图像
- 上传图像,重新定位,保存图像
- 在包含的html文件上定位图像
- JavaScript类更改onClick重新定位图像
- 随机定位图像,没有重叠
- 在框中重新定位图像
- 随机定位图像
- 加载和定位图像,当加载另一个图像时
- 通过搜索ID号定位图像
- 图像放大/缩小无法正确定位图像
- 用margin-top定位图像
- 在Jquery中定位图像
- 定位图像基于浏览器的宽度和高度
- 如何使用js在滑块中定位图像
- 旋转图像到两个值之间的角度,并重新定位图像中心
- 使用鼠标悬停功能在页面中定位图像
- 定位图像/背景图像相对于鼠标
- 用createElement Javascript制作的定位图像
- 如何在路径上定位图像