2015-03-04 1 views
1

J'essaie de dessiner une image dans une certaine zone. En ce moment j'ai un code qui remplit une zone avec RadialGradientPaint.Couper une image en tampon dans une zone

Area lightArea = ... 
// fill the polygon with the gradient paint 
g.setPaint(light.paint); 
g.fill(lightArea); 

Je voudrais attirer une BufferedImage dans cette zone au lieu de dessiner un RadialGradientPaint. Y a-t-il un moyen de le faire?

Répondre

1

Vous pouvez utiliser BufferdImage#getSubimage

Rectangle bounds = area.getBounds(); 
BufferedImage img = master.getSubImage(0, 0, Math.min(bounds.width, master.getWidth()), Math.min(bounds.height, master.getHeight()); 

Cela suppose que la zone est rectangulaire. Si ce n'est pas le cas, créez une image de masque à froid, basée sur la forme du Area et utilisez-la pour générer une image masquée (cookie découpant l'image hors de la forme)

Comme démontré here. Le bénéfice de ce qui est il permet antialiasing