Piao Java 2D General Path

Oi pessoal, eu ando aprender java 2D, eu uso o eclipse, mas precisava de alguma ajuda, eu infelizmente n tenho muito pratica, e gostaria de saber se por acaso alguem tenha um codigo ja feito de um piao usando o generalPath, agredicia a ajuda

Abraço pessoal

Oi. Você pode postar um desenho do que vc quer obter?

E também o código do que você já fez?

Você quer desenhar algo como isto aqui (um semicírculo mais um triângulo?)

A imagem no qual estou a tentar desenhar é essa anexada, andame a dar uma dor de cabeça, lamento, mas n estou neste momento no meu computador, estou no computado da biblioteca, seria possivel fazer um de codigo de exemplo dessa imagem?
Agradecia muito a ajuda pessoal
Abraço pessoal

Se você leu o javadoc de GeneralPath, você pelo menos consegue saber quais são os pedaços que você precisa usar? (Por exemplo, para fazer o corpo do pião você precisa usar uma ou duas ou três vezes o método quadTo ou curveTo, por exemplo? Você tem desenhado isso em algum papel milimetrado (não sei como é que se chama isso em Portugal) para facilitar você a achar as coordenadas adequadas?

A resposta é não. A gente ajuda você a fazer o seu, mas não faz para você.

Usar o GeneralPath é bem fácil. Qualquer um com um pouco de paciência faz, mesmo que seja só desenhando pequenas linhas.

Compreendo, eu infelizmente tenho que ter isso disponivel para amanha, entao poderem-me indicar os documentos adequados para cria-lo?
Agradecia
Abraço

Sim, você pode começar pelo meu site. Tem um artigo lá chamado “O fantasma do Pacman”, com link para download de um programa que desenha o fantasminha do jogo Pacman.

Ali, bastaria você alterar o trecho que usa o GeneralPath em si. O artigo explica em detalhes como o GeneralPath foi usado. Não tenha medo, o trabalho é mais braçal do que complexo.

ViniGodoy , desculpa pela pergunta ignorante :S, mas deume um erro numa linha, este:

“package br.com.pontov.ghost;”

Qual o problema?

P.S.:Obrigado pela tutorial, e o source do ghost ta muito bem explicado :wink:

Depende, que erro deu?

Eu testei o código antes de publicar. Talvez você não tenha criado a estrutura de diretórios corretamente no Eclipse.
Eu também fiz aquele código no eclipse.

continuame a daro o erro, ate criei novo projecto, aqui ta o screen


Em src, clique com o botão direito e crie um pacote (package) br.com.pontov.ghost.

A seguir, mova os arquivos .java para esse package.

Por que é que está escrito “fantasma.br.com.pontov.ghost” ?

Obrigado, ja´está a dar
:slight_smile:

Bem, n parece assim tao dificil, a parte do topo, parece practicamente com um piao, mas vou preocupar depois isso, agora na laterl direita e esquerda, para elas se pdoerem coincidir, bastame so mexer com estas coordenadas.

[code]//Lateral esquerda
gp.moveTo(0, 35);
gp.lineTo(0, 100);

	//Base
	gp.quadTo(10, 95, 20, 100);
	gp.quadTo(25, 75, 30, 100);
	gp.quadTo(40, 95, 50, 100);
	gp.quadTo(55, 75, 60, 100);
	gp.quadTo(70, 95, 80, 100);
	
	//Lateral direita
	gp.lineTo(80, 35);

Já agora, so uma curiosidade, do teu fantasma é possivel criar um gerador aleatorio?

Pessoal, n consigo fazer com que o ponto da lateral direita chegue para o meio, o da esquerda consigo, mas a direita n, conseguem-me ajudar nisso?

o codigo da aqui

import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Paint;
import java.awt.RenderingHints;
import java.awt.geom.Ellipse2D;
import java.awt.geom.GeneralPath;

public class Piao {
	
	
	private Color color = Color.RED;

	public void paint(Graphics g) {	
		Graphics2D g2d = (Graphics2D) g.create();
		
		
		g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
		
		
		drawBody(g2d);			
		
		
		g2d.dispose();
	}
	
	public void setColor(Color color)
	{
		this.color = color;
	}
	
	public Color getColor()
	{
		return color;
	}
	

	private void drawBody(Graphics2D g2d) {		
		GeneralPath gp = new GeneralPath();
		
		//Lateral esquerda
		gp.moveTo(0, 35);
		gp.lineTo(35, 100);
		
		//Base
		gp.quadTo(10, 100, 100,100);
	
		
		//Lateral direita
		gp.lineTo(80, 35);
		
		//Topo
		gp.curveTo(70, -5, 8, -5, 0, 30);

		
		Paint oldPaint = g2d.getPaint(); 
		
		GradientPaint paint = new GradientPaint(
				0, 40, color, 				
				70, 40, color.darker());	
		g2d.setPaint(paint);
		
		//Pintura Piao		
		g2d.fill(gp);
		
		
		g2d.setPaint(oldPaint); 
	}
}