将 BufferedImage 裁剪到一个区域
Clip a BufferedImage to an Area
我正在尝试在特定区域内绘制图像。现在我有代码用 RadialGradientPaint
.
填充一个区域
Area lightArea = ...
// fill the polygon with the gradient paint
g.setPaint(light.paint);
g.fill(lightArea);
我想在那个区域画一个 BufferedImage
而不是画一个 RadialGradientPaint
。有什么办法可以做到吗?
g.setClip(lightArea);
g.drawImage(yourImage, x, y, null);
有关详细信息,请参阅 http://docs.oracle.com/javase/tutorial/2d/advanced/clipping.html。
你可以使用 BufferdImage#getSubimage
Rectangle bounds = area.getBounds();
BufferedImage img = master.getSubImage(0, 0, Math.min(bounds.width, master.getWidth()), Math.min(bounds.height, master.getHeight());
这假定该区域是矩形的。如果不是,您可以根据 Area
的形状冷创建一个遮罩图像,并使用它来生成遮罩图像(cookie 将图像切割出形状)
如图所示here。其好处是它允许抗锯齿
我正在尝试在特定区域内绘制图像。现在我有代码用 RadialGradientPaint
.
Area lightArea = ...
// fill the polygon with the gradient paint
g.setPaint(light.paint);
g.fill(lightArea);
我想在那个区域画一个 BufferedImage
而不是画一个 RadialGradientPaint
。有什么办法可以做到吗?
g.setClip(lightArea);
g.drawImage(yourImage, x, y, null);
有关详细信息,请参阅 http://docs.oracle.com/javase/tutorial/2d/advanced/clipping.html。
你可以使用 BufferdImage#getSubimage
Rectangle bounds = area.getBounds();
BufferedImage img = master.getSubImage(0, 0, Math.min(bounds.width, master.getWidth()), Math.min(bounds.height, master.getHeight());
这假定该区域是矩形的。如果不是,您可以根据 Area
的形状冷创建一个遮罩图像,并使用它来生成遮罩图像(cookie 将图像切割出形状)
如图所示here。其好处是它允许抗锯齿