![](/img/trans.png)
[英]Drawing a transparent BufferedImage over a non-transparent BufferedImage
[英]Get an Area containing the non-transparent pixels in a BufferedImage in Java
在Java SE 7中,我创建了一个BufferedImage
对象:
BufferedImage i = new BufferedImage(300, 300, BufferedImage.TYPE_INT_ARGB);
Graphics2D g = i.createGraphics();
然后我用颜色填充图像的一部分,使用几个调用fillPolygon
, drawImage
等(注意我的一些颜色的alpha小于255.)
我的问题是,如何构造一个仅包含BufferedImage
绘制的区域的Area
对象? 通过阅读API文档,我相信它可以通过检查getAlphaRaster
方法返回的Raster
来完成,但我希望有一种更简单(也更快)的方法。
..我可以构造一个
Area
对象,它只包含在BufferedImage
绘制的区域吗?
在此源中看到的getOutline(..)
方法可用于区分图像的不透明和半透明部分。 话虽如此,该方法仅检查该像素的目标颜色和图像颜色之间的“精确匹配”。 你需要调整它来检查alpha <255。
ShapeContainment
类将用于确定某个点是否属于多个Area
实例中的任何一个。
在OneRing
和ShapeCollision
可以看到其他使用Java-2D和图像的ShapeCollision
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.