Swing/PathIterator のバックアップ(No.14)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - 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)
- category: swing
folder: PathIterator
title: PathIteratorからSVGを生成
tags: [Icon, Shape, PathIterator]
author: aterai
pubdate: 2009-03-30T14:13:46+09:00
description: ShapeからPathIteratorを取得し、このPathをSVGに変換します。
image:
hreflang:
href: http://java-swing-tips.blogspot.com/2013/02/get-svg-from-pathiterator.html lang: en
概要
Shape
からPathIterator
を取得し、このPath
をSVG
に変換します。
Screenshot
Advertisement
サンプルコード
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;
}
View in GitHub: Java, Kotlin解説
上記のサンプルでは、Shape
からPathIterator
を取得し、そのパスを辿ってSVG
ファイルを生成しています。