[解決済み] HTML5 の canvas に SVG ファイルを描画する
質問
HTML5のキャンバスにSVGファイルを描画するデフォルトの方法はありますか?Google Chrome は、SVG を画像として読み込むことをサポートしています(そして、単純に
drawImage
しかし、開発者コンソールでは
resource interpreted as image but transferred with MIME type image/svg+xml
.
可能性としては、SVGをcanvasコマンドに変換することでしょうが(例えば この質問 ) が、それは必要ないと思っています。古いブラウザは気にしない(だから、FireFox 4とIE 9が何かサポートしてくれればそれでいい)。
どのように解決するのですか?
EDIT:2019年12月
は パス2D() のコンストラクタがサポートされています。 主要ブラウザ これにより、2D canvas サーフェス上でパスオブジェクトを宣言することができるようになりました。
EDIT:2014年11月
を使用できるようになりました。
ctx.drawImage
を持つHTMLImageElementを描画するために使用します。
.svg
ソース
で
一部のブラウザで表示されます。
(75%のカバー率。Chrome、IE11、Safariは動作します。Firefoxはバグがありますが、ナイトリーで修正されています)。
var img = new Image();
img.onload = function() {
ctx.drawImage(img, 0, 0);
}
img.src = "http://upload.wikimedia.org/wikipedia/commons/d/d2/Svg_example_square.svg";
ライブ映像はこちら
. キャンバスに緑の四角が表示されるはずです。ページ上の2つ目の緑の四角は、同じように
<svg>
要素をDOMに挿入し、参照できるようにしました。
また、新しいPath2Dオブジェクトを使って、SVG(文字列)パスを描画することもできます。つまり、書くことができる。
var path = new Path2D('M 100,100 h 50 v 50 h 50');
ctx.stroke(path);
2010年版のオリジナル回答です。
canvasでSVGパスをネイティブに使用できるものはありません。自分で変換するか、ライブラリを使って変換する必要があります。
を調べてみることをお勧めします。 キャンバジ : (チェック ホームページ & デモ )
カンバン は、SVG ファイルの URL、または SVG ファイルのテキストを受け取り、JavaScript で解析し、結果を Canvas 上に描画します。
関連
-
[解決済み] HTML5のlocalStorageにオブジェクトを格納する方法は?
-
[解決済み] 再描画のためにキャンバスをクリアする方法
-
[解決済み] HTML5/Canvas/JavaScriptを使用してブラウザ内のスクリーンショットを撮影する
-
[解決済み] Flexbox:水平方向と垂直方向の中央揃え
-
[解決済み] HTML Canvas を gif/jpg/png/pdf としてキャプチャしますか?
-
[解決済み] Do I use <img>, <object>, or <embed> for SVG files?
-
[解決済み] CSSでdivを縦にスクロールできるようにする
-
[解決済み] HTML5でminlengthの検証属性はありますか?
-
[解決済み] HTML5 CanvasとSVGとdivの比較
-
[解決済み】HTML5入力のプレースホルダの色をCSSで変更する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] cssのfit-contentで横幅を自動サイズ調整する
-
[解決済み] CSSでテキストや画像の背景を透明にするには?
-
[解決済み] HTML 5: Is it <br>, <br/>, or <br />?
-
[解決済み] スクロールバーを隠すが、スクロールはできる状態
-
[解決済み] CSSでdivのアスペクト比を維持する
-
[解決済み] リンクを新しいタブまたはウィンドウで開く[重複]。
-
[解決済み] divブロック内のテキストを(水平方向と垂直方向に)センタリングするにはどうすればよいですか?
-
[解決済み] Zalgoテキストはどのように機能しますか?
-
[解決済み] label要素の中にinput要素を入れるべきですか?
-
[解決済み] HTMLのレイアウトにテーブルを使用しない理由は?[クローズド]