我正在尝试将图片添加到画布,但要将其限制为它所放置的图层的大小。我为图层设置了width
和height
,但它仍然没有做我想做的。如果内容在边框外可见,为什么有宽度和高度?
是否有限制容器内容的解决方案?
答案 0 :(得分:4)
您可以通过多种方式隐藏溢出动态图像对象的内容
澄清:所有kineticJS层总是与舞台大小相同(不可更改)
但是,您可以将图像放在KineticJS图像对象中,然后操纵图像。
解决方案#1:使用图像对象offset
属性:
您可以使用offset
属性将KineticJS图像对象(如视口)用于更大的图像。如果您以后想要将视口移动到原始图像的另一部分,则此方法很有用。
解决方案#2:使用图像对象crop
属性:
您可以裁剪较大的原始图像以适合较小的KineticJS图像对象。如果要永久查看原始图像的裁剪部分,此方法很有用。顺便说一句,如果你想缩放裁剪的部分,这个方法也很有用。
将crop
属性添加到KineticJS图像对象时,将根据您的规格裁剪原始图像。这样可以保留原始图像的所需部分并裁掉掉不需要的部分。
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>