Swing/PathIterator のバックアップ差分(No.6)
- バックアップ一覧
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- バックアップ を表示
- Swing/PathIterator へ行く。
- 1 (2009-03-30 (月) 14:13:46)
- 2 (2011-11-30 (水) 21:02:47)
- 3 (2012-03-27 (火) 21:48:06)
- 4 (2012-03-28 (水) 15:58:59)
- 5 (2012-04-03 (火) 20:42:27)
- 6 (2012-06-14 (木) 21:25:49)
- 7 (2013-01-09 (水) 12:35:33)
- 8 (2013-01-10 (木) 17:49:35)
- 9 (2013-02-08 (金) 09:55:45)
- 10 (2013-02-09 (土) 00:00:18)
- 11 (2014-11-23 (日) 16:52:27)
- 12 (2016-01-06 (水) 21:35:12)
- 13 (2017-06-16 (金) 14:09:50)
- 14 (2018-02-24 (土) 19:51:30)
- 15 (2018-06-22 (金) 13:58:11)
- 16 (2019-05-22 (水) 19:35:38)
- 17 (2020-06-07 (日) 15:58:46)
- 18 (2021-11-25 (木) 05:38:00)
- 追加された行はこの色です。
- 削除された行はこの色です。
TITLE:PathIteratorからSVGを生成 #navi(../) RIGHT:Posted by &author(aterai); at 2009-03-30 *PathIteratorからSVGを生成 [#h0bc8b69] ShapeからPathIteratorを取得し、このPathをSVGに変換します。 -&jnlp; -&jar; -&zip; //#screenshot #ref(http://lh3.ggpht.com/_9Z4BYR88imo/TQTQ-2m7pMI/AAAAAAAAAgc/B55RHlb8ajM/s800/PathIterator.png) **サンプルコード [#gabf6062] #code{{ private StringBuilder makeStarburstSvg(PathIterator pi, int sz, String style, String desc) { StringBuilder sb = new StringBuilder(); sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); //... sb.append(String.format("<svg width=\"%d\" height=\"%d\" xmlns=\"%s\">\n", sz, sz, w3)); sb.append(String.format(" <desc>%s</desc>\n", desc)); sb.append(" <path d=\""); double[] c = new double[6]; while(!pi.isDone()) { switch(pi.currentSegment(c)) { case PathIterator.SEG_MOVETO: sb.append(String.format("M%.2f,%.2f ", c[0], c[1])); break; case PathIterator.SEG_LINETO: sb.append(String.format("L%.2f,%.2f ", c[0], c[1])); break; case PathIterator.SEG_QUADTO: sb.append(String.format("Q%.2f,%.2f,%.2f,%.2f ",c[0],c[1],c[2],c[3])); break; case PathIterator.SEG_CUBICTO: sb.append(String.format("C%.2f,%.2f,%.2f,%.2f,%.2f,%.2f ",c[0],c[1],c[2],c[3],c[4],c[5])); break; case PathIterator.SEG_CLOSE: sb.append("Z"); break; } pi.next(); } sb.append(String.format("\" style=\"%s\" />\n</svg>\n", style)); return sb; } }} **解説 [#o16c7ad1] 上記のサンプルでは、ShapeからPathIteratorを取得し、そのパスを辿ってSVGファイルを生成しています。 -%%対応しているのは、PathIterator.SEG_MOVETO、PathIterator.SEG_LINETOのみ%% **参考リンク [#p458d4b4] -[http://www.hcn.zaq.ne.jp/___/SVG11-2nd/index.html SVG 1.1 仕様 (第2版) 日本語訳] --[http://www.hcn.zaq.ne.jp/___/SVG11-2nd/paths.html パス – SVG 1.1 (第2版)] -[http://www.w3schools.com/svg/svg_path.asp SVG Path] -[http://www.inkscape.org/ Inkscape 自由に描く。] **コメント [#g1aae1e8] - サンプルコードにはコードすべて表示(記入)した方がいいと思います。 -- [[名無し]] &new{2012-03-27 (火) 21:48:06}; - 追記:そうじゃなくてはわかりにくいので。例えばJavaDriveさんのように -- [[名無し]] &new{2012-03-27 (火) 21:48:48}; -- ご指摘ありがとうございます。現状、大きめのサンプルではコードを丸ごと貼り付けるとページが長くなる、小さいサンプルでもあまり意味のないコードが毎回でてくる…、などの理由でコードの一部(Tips for the Code Snippets)だけ表示するようにしています。コード全部みたい場合は、src.zipを展開して好みのエディタで開くか、リポジトリ(svn repository)をたどってくださいという姿勢なんですが、自分でもたまにリポジトリをクリックしていくのが面倒なことがあるので、一気に*.javaにジャンプできるようなリンクでも追加できないか検討してみます。 -- [[aterai]] &new{2012-03-28 (水) 15:58:59}; -- ご指摘ありがとうございます。現状、大きめのサンプルではコードを丸ごと貼り付けるとページが長くなる、小さいサンプルでもあまり意味のないコードが毎回でてくる…、などの理由でコードの一部(Tips for the Code Snippets)だけ表示するようにしています。コード全部を見たい場合は、src.zipを展開して好みのエディタで開くか、リポジトリ(svn repository)をたどってくださいという姿勢なんですが、自分でもたまにリポジトリをクリックしていくのが面倒なことがあるので、一気に*.javaにジャンプできるようなリンクでも追加できないか検討してみます。 -- [[aterai]] &new{2012-03-28 (水) 15:58:59}; #comment