2015-03-04 5 views
1

Я пытаюсь нарисовать изображение в определенной области. Прямо сейчас у меня есть код, который заполняет область RadialGradientPaint.Закрепить буфер в области

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

Я хотел бы обратить в этой области в BufferedImage вместо рисования RadialGradientPaint. Есть ли способ, которым я могу это сделать?

ответ

1

Вы можете использовать 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 и использовать его для создания замаскированного изображения (печенье, вырезающее изображение из формы)

Как показано here. Преимуществом которого является его сглаживание