Portál AbcLinuxu, 9. května 2025 13:20
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.
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.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.