Desenhar Linha pixel by pixel

2 respostas
R

Boa tarde,

Como posso desenhar uma linha dando dois pontos de forma random?

Preciso de guardar depois num ficheiro, mas tenho de desenhar pixel by pixel, o que tenha até agora:

//criados dois pontos aleatorios

try {
			image =  new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
			for (int i = 0; i < image.getHeight(); i++) { 
				for (int j = 0; j < image.getWidth(); j++)
				{
                                    					
				        //TODO - Calcular o valor entre os dois pontos e saber se preciso pintar ou não
			                image.setRGB(j,i, Color.red.getRGB());	 //fazer set do pixel com a cor da linha
				}
			}
			
			ImageIO.write(image, "bmp", new File(output_img_path));
		} catch (IOException e1) {		
			System.out.println("ERROR !!!!");
		}

Obrigado

2 Respostas

ViniGodoy
  1. Você é obrigado a desenhar pixel-a-pixel? Nesse caso,use o algorítmo de besenham:
    http://pt.wikipedia.org/wiki/Algoritmo_de_Bresenham
    http://www.frankmarcel.com/programacao/desenhar-reta-java-bresenham-ddainteiro

  2. Se não for, use o método createGraphics() da classe bufferedImage. Ele irá te retornar um objeto do tipo Graphics2D. Use esse objeto para pintar a linha e depois faça um dispose() nele.

R

O problema final é criar um triangulo de cores RGB como por exemplo: http://www.google.pt/imgres?q=java+triangle+rgb&um=1&hl=pt-PT&safe=off&gbv=2&tbm=isch&tbnid=PPu_gUa0rQFpzM:&imgrefurl=http://blog.abstractable.net/2008/10/its-like-looking-into-eye-of-duck.html&docid=nAgs5B334lhOQM&imgurl=http://denbeste.nu/external/triangle.jpg&w=500&h=500&ei=DZvSTrS_Dcma-gar_cnqDg&zoom=1&iact=hc&vpx=686&vpy=139&dur=482&hovh=225&hovw=225&tx=109&ty=109&sig=104755631029857626458&page=1&tbnh=145&tbnw=161&start=0&ndsp=18&ved=1t:429,r:3,s:0&biw=1280&bih=652

Por isso será mais fácil começar por desenhar o triangulo pixel a pixel. porque com o graphics2D não conseguirei fazer o fill do triangulo da forma que quero.

Com esse algoritmo não sei como utiliza-lo, uma vez que estou a percorrer pixel a pixel, e queria ter uma função auxiliar com parametros x e y, onde retorno true ou false, ou seja, se devo ou não pintar.

Criado 27 de novembro de 2011
Ultima resposta 27 de nov. de 2011
Respostas 2
Participantes 2