Portál AbcLinuxu, 3. listopadu 2025 22:48
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.