[resolvido] Como fazer intersecção entre 2 figuras (gráficos 2d)?

3 respostas
E

Galera, eu tenho esse arquivo nomeado exercicio1_aula1, e eu tenho que fazer algumas operações com um círculo e um retângulo, mas eu não sei como fazer isso. O meu professor apenas nos passou o seguinte, mas sem nenhum exemplo de código:

Primitivas em Java 2D
- Area:
classe que permite algumas operações
entre primitivas.
- Area a = new Area (Shape s)
- areaA.add(areaB)
- areaA.intersect(areaB)
- areaA.subtract(areaB)
- areaA.exclusiveOr(areaB)
Eu apenas consegui desenhar as figuras,mas não fazer as operações. O meu código é o seguinte:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import java.awt.geom.Ellipse2D;

import javax.swing.JFrame;

public class exercicio1_aula1 extends JFrame{
	public exercicio1_aula1(){}
	
	public void paint(Graphics g) {
		Graphics2D g2d = (Graphics2D)g;
		
		g2d.setColor(new Color(160, 0, 0));
		g2d.drawString("Retângulo", 300, 40);
		Rectangle2D.Double retangulo = new Rectangle2D.Double(300, 50, 100, 100);
		g2d.fill(retangulo);
		
		g2d.setColor(new Color(0, 160, 0));
		g2d.drawString("Círculo", 100, 40);
		Ellipse2D.Double circulo = new Ellipse2D.Double(100, 50, 100, 100);
		g2d.fill(circulo);
	}
	
	public static void main(String args[]) {
		exercicio1_aula1 f = new exercicio1_aula1();
		f.setTitle("Aula 1, Exercício 1");
		f.setSize(768, 768);
		f.setDefaultCloseOperation(EXIT_ON_CLOSE);
		f.setVisible(true);
		
	}
}

3 Respostas

E

Procure por AlphaComposite.

E

Olha, nessa versão do código, as figuras estão sobrepostas e eu importei a biblioteca Area importada e 2 instâncias de Area gerados. Agora só preciso fazer uma operação com isso(um XOR, por exemplo):

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Area;

import javax.swing.JFrame;

public class exercicio1_aula1 extends JFrame{
	public exercicio1_aula1(){}
	
	public void paint(Graphics g) {
		Graphics2D g2d = (Graphics2D)g;
		
		g2d.setColor(new Color(160, 0, 0));
		g2d.drawString("Retângulo", 150, 40);
		Rectangle2D.Double retangulo = new Rectangle2D.Double(150, 50, 100, 100);
		g2d.fill(retangulo);
		
		g2d.setColor(new Color(0, 160, 0));
		g2d.drawString("Círculo", 100, 40);
		Ellipse2D.Double circulo = new Ellipse2D.Double(100, 50, 100, 100);
		g2d.fill(circulo);
		

		Area a = new Area(/*o que vem aqui dentro?*/);
		Area b = new Area(/*e aqui dentro?*/);
		a.exclusiveOr(b);
	}
	
	public static void main(String args[]) {
		exercicio1_aula1 f = new exercicio1_aula1();
		f.setTitle("Aula 1, Exercício 1");
		f.setSize(800, 600);
		f.setDefaultCloseOperation(EXIT_ON_CLOSE); //pára o programa(e a máquina virtual) quando clicar no botão "X" da janela
		f.setVisible(true);
		
	}
}
E

Opa, finalmente consegui usar os métodos da classe! Obrigado pela ajuda, galera! Problema resolvido. Consegui usar os 4 principais métodos para fazer operações com os gráficos.

Criado 19 de março de 2013
Ultima resposta 20 de mar. de 2013
Respostas 3
Participantes 2