Estou tentando fazer um mapa circular para um jogo , então queria cortar uma imagem circularmente pra pintar na tela.
como poderia fazer isso!?
Você quer saber como faz isso em Java2D, opengl ou só na imagem mesmo?
java2d
Acho que você pode tentar dar um clip normal.
private Ellipse2D ellipse = new Ellipse2D.Float();
ellipse.setFrame(x, y, ew, eh);
g2.setClip(ellipse); // ou g2.clip(ellipse)
já tentou isso?
Segue um exemplo, o método createClipped faz a mágica acontecer:
[code]package br.com.guj;
import java.awt.Graphics2D;
import java.awt.geom.Ellipse2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;
public class Snippet {
private static BufferedImage createClipped(BufferedImage input) {
int t = Math.min(input.getWidth(), input.getHeight());
BufferedImage other = new BufferedImage(t, t, input.TYPE_INT_ARGB);
//Obtém o contexto gráfico
Graphics2D g2d = other.createGraphics();
//Define a área de pintura para um círculo
g2d.setClip(new Ellipse2D.Double(0, 0, t, t));
//Desenha a imagem
g2d.drawImage(input, 0, 0, null);
//Libera o contexto gráfico
g2d.dispose();
return other;
}
private static File newFile(File file, String detail) {
return new File(file.getParentFile(), file.getName().substring(0,
file.getName().indexOf("."))
+ "-" + detail + ".png");
}
public static void main(String[] args) throws IOException {
JFileChooser chooser = new JFileChooser();
chooser.setDialogTitle("Escolha a imagem");
chooser.setFileFilter(new FileNameExtensionFilter("Imagens", "jpg", "png", "bmp"));
if (chooser.showOpenDialog(null) != JFileChooser.APPROVE_OPTION)
return;
BufferedImage redonda = createClipped(ImageIO.read(chooser.getSelectedFile()));
ImageIO.write(redonda, "png", newFile(chooser.getSelectedFile(), "redonda"));
}
}
[/code]
funcionou!
valeu!