-
V
kódu je datový model pro některé tvary (úsečka, obdélník, elipsa) s nastavitelnou tloušťkou a barvou čáry (bez výplně). Příklad:
obdélník s výškou
300px, šířkou 200px, pozicí
X=100px, Y=150px, tloušťkou 15px, barvou #2C2F93
-
V
kódu se (dočasně)
vytváří konkrétní ukázka obrázku s několika tvary, od každého typu alespoň
jeden. Ty jsou po spuštění aplikace vykresleny.
-
Tvary jsou vykresleny na bílém
pozadí a aplikace
se spouští v maximalizovaném
okně.
Tipy
-
Datový model bude potřebovat také třídu pro “celý obrázek”.
-
V
metodě Main.main využijte invokeLater.
-
Založte třídu odvozenou od JFrame
a jinou třídu odvozenou od JPanel.
-
Panelová třída překryje metodu paintComponent a v ní může provádět vlastní vykreslování. Příklad:
@Override
public void paintComponent(Graphics
g) {
super.paintComponent(g);
// následuje
specifické vykreslování
}
-
Objekt reprezentující obrázek použijte jako parametr konstruktoru
panelové třídy (aby obrázek existoval už předtím, než vzniká panel, který ho zobrazí).
-
Doporučený postup: Třídy pro obdélník, elipsu atd. budou
implementovat společné
rozhraní (níže jako MujTvar). Toto rozhraní bude mít
metodu např. Draw(Graphics2D g). Např. obdélník v rámci této metody vykreslí
na obrazovku obdélník prostřednictvím objektu typu Graphics2D.
Tip k vytváření tvarů
List<MujTvar>
list = new ArrayList<>;
list.add(new MujObdelnik(100,
100, 300, 400, 50, "#5f55ff"));
list.add( new MojeElipsa(300,
300, 500, 600, 20, "#0f55ff"));
Tip k panelové třídě
public class MujPanel extends JPanel
{
//…
public MujPanel(MujObrazek
obrazek)
{
this.obrazek
= obrazek;
}
@Override
public void paintComponent(Graphics g)
{
super.paintComponent(g);
// následuje specifické vykreslování
}
}
Tip k vykreslování
Ukázka metody, která by se mohla vyskytovat ve třídě Rectangle, čímž implementuje společné rozhraní:
@Override
public void Draw(Graphics2D
graphics)
{
graphics.setStroke(new
BasicStroke(strokeWidth));
graphics.setColor(Color.Decode(color));
graphics.drawRect((int)x,(int)y,(int)width,(int)
height);
}