Portál AbcLinuxu, 9. května 2025 13:20

Dotaz: Java WritableRaster - kresba obdélníku

4.12.2009 17:55 filbar | skóre: 36 | blog: Denicek_programatora | Ostrava
Java WritableRaster - kresba obdélníku
Přečteno: 259×
Odpovědět | Admin
Jde nějak v Javě nakteslit obdélník do WritableRasteru?
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.awt.image.WritableRaster;

public class Platno extends Canvas{
	private static final long serialVersionUID = 4741063338633439424L;
	public BufferedImage bi;
	public WritableRaster wr; 
	
	
	public Platno() {
		this.setBackground(Color.WHITE);
		this.bi=new BufferedImage(792,554,BufferedImage.TYPE_INT_RGB);
		this.wr=this.bi.getRaster();
	}
		
	public void clear() {
		int[] color=new int[3];
		color[0]=0;
		color[1]=0;
		color[2]=0;
		for(int x=0;x<this.getWidth();x++) {
			for(int y=0;y<this.getHeight();y++) {
				this.wr.setPixel(x, y, color);
			}
		}
		this.paint(this.getGraphics());
	}
	
	public void paintRec(int x1, int y1, int x2, int y2) {
		this.getGraphics().setColor(Color.BLACK);
		this.getGraphics().drawRect(x1, y1, x2-x1, y2-y1);
		this.paint(this.getGraphics());
	}

	public void paint(Graphics g) {
		g.drawImage(this.bi,0,0,null);
	}
	
	public WritableRaster getRaster() {
		return this.wr;
	}
	
	public BufferedImage getImage() {
		return this.bi;
	}

	public void setImage(WritableRaster r) {
		this.wr=r;
		this.paint(this.getGraphics());
	}
}
V této třídě je to metoda paintRec. Problém s ní je, že se ten obdélník nikdy nevykreslí.

Předem děkuji za jakékoliv rady.
Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

6.12.2009 01:38 Messa | skóre: 39 | blog: Messa
Rozbalit Rozbalit vše Re: Java WritableRaster - kresba obdélníku
Odpovědět | | Sbalit | Link | Blokovat | Admin
Mě to funguje (obdélník se vykreslí), když metoda paintRec vypadá takto:
	public void paintRec(int x1, int y1, int x2, int y2) {
		Graphics g = this.bi.getGraphics();
                g.setColor(Color.ORANGE);
		g.drawRect(x1, y1, x2-x1, y2-y1);

		this.paint(this.getGraphics());
	}
Příště by možná bylo lepší dát sem spustitelný kód, abych pro vyzkoušení nemusel psát omáčku okolo. A metody, které nejsou nikde volány, by v příkladě být také nemusely.

Jinak, v čem je zde problém - mělo by stačit zamyslet se, co děláš. Chceš nakrestil obdélník do WritableRasteru.Tak proč nikde nevidím, že bys do toho wr nebo bi někdy něco kreslil? A proč kreslíš obdélník přímo do canvasu, když tam ho nechceš? :)

Tedy snad se nepletu, Javu moc neumím. Jo a tu barvu jsem si nastavil na oranžovou, černá na černé je špatně vidět.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.