Stránka sa načítava, prosím čakajte…
© 2005 – 2024 Roman Horváth, všetky práva vyhradené. Dnes je 2. 5. 2024.
Dátum: 23. 12. 2020, pred štyrmi rokmi
Táto jednoduchá utilita ukazuje ako sa dá SVG podpora programovacieho rámca GRobot využiť na odstránenie transformácií z (XML/SVG) definícií SVG tvarov. Keďže sú pri tom používané vnútorné mechanizmy Javy, transformácia poruší pôvodnú jednoduchosť tvaru a vytvorí aj z pôvodne jednoduchých tvarov (ako elipsa alebo obdĺžnik) cesty a polygóny. No i tak sa dá niekedy výsledok použiť na zjednodušenie alebo urýchlenie procesu ručného odstraňovania transformácií z jednoduchších tvarov a na cesty/polygóny sa dá použiť priamo.
Okno utility.
Zdrojový kód
~
import java.awt.Shape; import knižnica.*; import static knižnica.Svet.*; public class TransformujSVGTvar extends GRobot { private final SVGPodpora svgCieľ = new SVGPodpora(); private final StringBuffer textCieľa = new StringBuffer(); private final PoznámkovýBlok zdroj = new PoznámkovýBlok(); private final Tlačidlo tlačidlo = new Tlačidlo("Konvertuj"); private final PoznámkovýBlok cieľ = new PoznámkovýBlok(); private TransformujSVGTvar() { super(480, 580, "Transformuj SVG tvar"); Svet.písmo("Cambria", 10); farbaTextu(tmavošedá); farbaPozadia(snehová); skry(); zdroj.šírka(400); zdroj.výška(200); zdroj.skoč(0, 150); obkresliBlok(zdroj); cieľ.šírka(400); cieľ.výška(200); cieľ.skoč(0, -150); obkresliBlok(cieľ); svet.setAlwaysOnTop(true); } private void obkresliBlok(PoznámkovýBlok blok) { skočNa(blok); farba(papierová); vyplňObdĺžnik(blok.šírka() / 2 + 10, blok.výška() / 2 + 10); farba(svetlošedá); kresliObdĺžnik(blok.šírka() / 2 + 10, blok.výška() / 2 + 10); } @Override public void voľbaTlačidla() { vymažTexty(); svgPodpora.vymaž(); try { if (svgPodpora.pridajSVG(zdroj.text()) > 0) { textCieľa.setLength(0); int počet = svgPodpora.počet(); for (int i = 0; i < počet; ++i) { Shape tvar = svgPodpora.dajVýsledný(i); svgCieľ.vymaž(); svgCieľ.pridaj(tvar); textCieľa.append(svgCieľ.dajSVG(0)); textCieľa.append("\n\n"); } cieľ.text(textCieľa.toString()); } } catch (GRobotException e) { textCieľa.setLength(0); textCieľa.append(e.getMessage()); textCieľa.append("\n"); textCieľa.append(e.getCause().getMessage()); textCieľa.append("\n"); cieľ.text(textCieľa.toString()); e.getCause().printStackTrace(); } } public static void main(String[] args) { režimLadenia(true, true); použiKonfiguráciu("TransformujSVGTvar.cfg"); new TransformujSVGTvar(); vykonaťNeskôr(() -> { zbaľ(); upevni(); }); } }