JavaFX ImageView实现裁剪效果

在JavaFX中,我们有时候需要实现裁剪效果,这个时候我们可以使用ImageView的setClip方法来实现。

如下所示:

Image srcImage = new Image(getClass().getResource("test.png").toString());
ImageView imageView = new ImageView(srcImage);
Rectangle clip = new Rectangle(
       srcImage.getWidth(), srcImage.getHeight()
);
clip.setArcWidth(15);
clip.setArcHeight(15);
imageView.setClip(clip);

我们首先在ImageView中载入了一个Image,然后通过Image的大小创建了一个Rectangle,设置了圆角,并通过imageView的setClip方法应用到ImageView中。

效果如下:

大家可以看到圆角的效果,但是另外,倘若我们需要加上阴影等的特效的话,必须将clip设置为空,这样就需要我们重新拷贝Image了,代码如下:

SnapshotParameters parameters = new SnapshotParameters();
parameters.setFill(Color.TRANSPARENT);
WritableImage image = imageView.snapshot(parameters, null);
imageView.setClip(null);
imageView.setEffect(new DropShadow(20, Color.BLACK));
imageView.setImage(image);

我们通过Node的snapshot方法截图并讲clip设为空,然后重新设置了Image,并加上阴影效果。

效果如下:

这样大家可以看到阴影效果了。


最近比较忙,一直没有写博客。恩,在给别人改网站,公司有项目,自己还要做App,所以博客和邮箱都没有看,因为有人发邮件问了问题的,就趁机顺便写一下博客。

虽然忙了,但自己觉得还是比较充实的,人啊,有时候还是需要忙一点,才能找回工作的激情。

发表评论

电子邮件地址不会被公开。