我正在尝试将图像添加到画布,但将其限制为放入它的图层的大小。我为图层设置width
和height
,但它仍然没有做我想要的。如果内容在边界外可见,为什么还有宽度和高度?
有没有办法限制容器内的内容?
我正在尝试将图像添加到画布,但将其限制为放入它的图层的大小。我为图层设置width
和height
,但它仍然没有做我想要的。如果内容在边界外可见,为什么还有宽度和高度?
有没有办法限制容器内的内容?
您可以通过多种方式隐藏溢出 Kinetic Image 对象的内容
澄清:所有 kineticJS 层始终与舞台大小相同(不可更改)
但是,您可以将图像放入 KineticJS 图像对象中,然后对图像进行操作。
解决方案#1:使用图像对象offset
属性:
您可以使用 KineticJS 图像对象,例如使用该offset
属性将视口转换为更大的图像。如果您稍后想要将视口移动到原始图像的另一部分,此方法很有用。
解决方案#2:使用图像对象crop
属性:
您可以裁剪较大的原始图像以适合较小的 KineticJS 图像对象。如果您想永久查看原始图像的裁剪部分,此方法很有用。顺便说一句,如果您想缩放裁剪部分,此方法也很有用。
当您将crop
属性添加到 KineticJS Image 对象时,原始图像将根据您的规范进行裁剪。这将使您保留原始图像的所需部分并裁剪掉不需要的部分。
kImage=new Kinetic.Image({
image:img,
x:30,
y:30,
width:110,
height:110,
crop: {
x: 150,
y: 122,
width: 110,
height: 110
}
});
这是代码和小提琴:http: //jsfiddle.net/m1erickson/KbESf/
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Prototype</title>
<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
<script src="http://d3lp1msu2r81bx.cloudfront.net/kjs/js/lib/kinetic-v4.5.1.min.js"></script>
<style>
#container{
border:solid 1px #ccc;
margin-top: 10px;
width:300px;
}
</style>
<script>
$(function(){
var stage = new Kinetic.Stage({
container: 'container',
width: 300,
height: 150
});
var layer = new Kinetic.Layer();
stage.add(layer);
var kImage;
var img=new Image();
img.onload=function(){
addCroppedImage();
}
img.src="https://dl.dropboxusercontent.com/u/139992952/stackoverflow/faces.png";
function addCroppedImage(){
kImage=new Kinetic.Image({
image:img,
x:30,
y:30,
width:110,
height:110,
crop: {
x: 150,
y: 122,
width: 110,
height: 110
}
});
layer.add(kImage);
layer.draw();
}
}); // end $(function(){});
</script>
</head>
<body>
<p>Cropped image on Kinetic layer</p>
<div id="container"></div>
<p>Original Image</p>
<img src="https://dl.dropboxusercontent.com/u/139992952/stackoverflow/faces.png">
</body>
</html>