Qt のベクター画像フォーマット
Qt はグラフィックデータを読み込むための多くの標準的なファイルフォーマットをサポートしており、他のツールで作成されたコンテンツをインポートすることができます。
この記事ではベクター画像に焦点を当て、Qt アプリケーションで使用するためにベクター画像を作成する際の注意点を説明します。
注意: Qt の 2D グラフィックスのサポートに関する一般的な情報は、Qt の 2D グラフィックスのドキュメントを参照してください。
ファイルフォーマットSVG
SVG ファイルは、次の 2 つの方法で読み込むことができます。 Qt Quick:Imageコンポーネントを使用してソフトウェアでラスタライズされた画像として、またはVectorImage を使用してハードウェアで加速されたレンダリングとしてです(svgtoqml を使用して事前にファイルを変換することもできます)。
さらに、QSvgRenderer はソフトウェアラスタライザーへの一般的なアクセスを提供する。QSvgWidget とQGraphicsSvgItem は SVG コンテンツをアプリケーションに統合するための便利な API を提供する。 Qt Widgetsアプリケーションに統合するための便利なAPIを提供しています。
ベースラインとして、Qt は SVG 1.2 Tiny プロファイルの静的機能をサポートしています。このプロファイルでサポートされている機能の詳細なリストは、SVG 1.2 Tiny 仕様にあります。
さらに、いくつかの拡張機能もサポートされています。これらは現在のところソフトウェアラスタライザーのみでサポートされており、VectorImage やsvgtoqml のハードウェアアクセラレーションレンダラーではサポートされていない。
SVG のインタラクティブ機能はサポートされていないが、インタラクションは Qt Quickまたは Qt Widgets.SMILフォーマットかCSSキーフレームを使った、いくつかの特定のアニメーションタイプもサポートされています。
以下は、サポートされる機能とサポートされない機能の概要を示すハイレベルなリストです。サポートされていない機能は可能な限り無視されるので、サポートされていない機能に依存する SVG ファイルは表示されるが、漏れやエラーがあるかもしれない。
| 高レベル機能 | ソフトウェアラスタライザー | VectorImage | コメント |
|---|---|---|---|
| 変換 | はい | あり | |
| 基本図形 | はい | はい | 円、長方形、楕円、直線、ポリライン、多角形 |
| 任意形状 | はい | あり | 任意のベジェ曲線と直線から構築された複合パス |
| ラスター画像 | はい | あり | 埋め込みとファイルシステムへの保存の両方 |
| 間接法 | あり | あり | 特に "use "要素 |
| 条件処理 | はい | あり | 特に "switch "要素 |
| 単純なテキストレイアウト | はい | はい | |
| 埋め込みフォント | はい | あり | |
| ベタ塗り | あり | あり | |
| グラデーション塗りつぶし | あり | あり | |
| カスタマイズ可能なストローク | あり | あり | カスタマイズ可能な幅、ラインキャップ、ライン結合、ダッシュ |
| コスメティックストローク | あり | なし | ビューに合わせて拡大縮小しないアウトライン |
| グラデーションストローク | はい | あり | |
| マルチメディア | なし | いいえ | |
| スクリプト | いいえ | いいえ | |
| リンク | なし | なし |
さらに、以下の拡張機能が SVG 1.1 と SVG 2.0 からサポートされている:
| 高レベル機能 | ソフトウェアラスタライザ | VectorImage | コメント |
|---|---|---|---|
| マスク | はい | はい | |
| クリップパス | なし | いいえ | |
| パターン | はい | なし | |
| マーカー | はい | なし | |
| 再利用可能なシンボル | あり | あり | |
| 後処理フィルター | あり | あり | feColorMatrix、feFlood、feGaussianBlur、feOffset、feMerge。 |
最後に、以下のプロパティ・アニメーションがサポートされています(ここに記載されていないアニメーションは現在サポートされていません)。アニメーションは、最良の結果を得るために CSS keyframes フォーマットでエクスポートする必要があります。
| アニメーション機能 | ソフトウェアラスタライザー | VectorImage | コメント |
|---|---|---|---|
| 変形アニメーション | はい | あり | |
| カラーアニメーション | あり | あり | |
| 不透明度アニメーション | あり | あり | |
| オフセットパスアニメーション | あり | あり | パスに沿ったアイテムの位置と方向のアニメーション |
ファイルフォーマットLottie
SVG と同様に、Qt では Lottie フォーマットのファイルを読み込む方法が異なります。
LottieAnimation タイプは画像を読み込み、QSvgRenderer が SVG に対して行うのと同じように、ソフトウェアラスタライザを使って表示します。
さらに、VectorImage とlottietoqmlツールを使えば、ハードウェアアクセラレーションによるレンダリングも可能です。
Lottie ファイルをVectorImage で使用するには、モジュールに含まれるvectorimageformats プラグインを Qt Lottie Animationモジュールと一緒にデプロイする必要があります。また、VectorImage のassumeTrustedSource プロパティをtrue に設定する必要があります。
lottietoqmlツールを使って、LottieのソースファイルをQMLに変換することができます。その例は、lottietoqml Exampleにあります。
以下は、LottieAnimation タイプ(ソフトウェア・ラスタライザー)とVectorImage (lottietoqmlを使ったファイルのプリコンバートも含む)がサポートするハイレベルな機能のリストです。
| 高レベル機能 | LottieAnimation | VectorImage | コメント |
|---|---|---|---|
| 変換 | はい | はい | |
| 形状 | はい | はい | |
| ソリッドフィル | はい | あり | |
| グラデーション塗りつぶし | はい | あり | |
| カスタマイズ可能なストローク | あり | あり | カスタマイズ可能な幅、ラインキャップ、ライン結合、ダッシュ |
| グラデーションストローク | なし | なし | |
| 画像レイヤー | あり | あり | 埋め込みデータのみ |
| 合成前レイヤー | あり | あり | |
| パスのトリミング | あり | あり | |
| マット | はい | はい | |
| マスク | いいえ | なし | |
| リピーター | あり | なし | |
| レイヤー効果 | 塗りつぶし効果のみ | なし | |
| テキストレイヤー | なし | なし | |
| マルチメディア | なし | なし | オーディオおよびカメラレイヤーはサポートされていません。 |
| エクスプレッション | いいえ | なし | |
| 3Dレイヤー | なし | なし | |
| タイムリマッピング | なし | なし |
原理的には、Lottieフォーマットのほぼすべてのプロパティをアニメーション化することができます。アニメーション可能なプロパティの広範なサポートについては、LottieAnimation を使用してください。VectorImage (およびlottietoqml)は、アニメーションを作成するために一般的に使用されるプロパティの選択されたサブセットのサポートを提供します。
| 高レベルの機能 | LottieAnimation | VectorImage | コメント |
|---|---|---|---|
| 変形アニメーション | はい | はい | |
| パスのトリムアニメーション | あり | あり | |
| カラーアニメーション | はい | はい | |
| 不透明度アニメーション | あり | はい | |
| パスのアニメーション | はい | はい | 図形の制御点のモーフィングアニメーション |
| パスに沿った移動 | はい | あり | パスに沿ったアイテムの位置と向きのアニメーション |
| その他のプロパティのアニメーション | はい | なし |
ファイルフォーマットベクター画像フォーマットとしてのフォントファイル
SVGのようなベクターグラフィックスのための従来のフォーマットに加えて、ベクターグラフィックス資産がグリフとして保存されているカスタムフォントファイルを利用することも可能です。
これには、単純なイラストをテキストラベルにインライン化し、テキストと同様の組版特性を持たせることができるという利点がある。これにより、画像とテキストの位置合わせが容易になります。
この目的のためにフォントファイルを使用することは、大規模なアイコンライブラリを配布する便利な方法でもあり、ランタイムで置き換え可能なテーマを提供することもできます。
ただし、Qt でのフォントの使用はテキストを生成するために最適化されているため、VectorImage のような特殊なベクター画像コンポーネントの代替としてアイコンフォントを使用する場合には、いくつかの考慮事項があります。
まず第一に、 カ ラ ーフ ォ ン ト はつねに、 指定 さ れた ピ ク セルサ イ ズで ラ ス タ リ ゼーシ ョ ン さ れます。こ れは こ の よ う なテ キ ス ト ア イ テ ムに変換を適用す る と 、 拡縮ア ーテ ィ フ ァ ク ト が発生す る こ と を意味 し ます。た と えば、 ズームが必要な イ ラ ス ト では、VectorImage を用いる こ と が推奨 さ れます。
アニメートされたベクター画像にも、特殊化されたコンポーネントを使うのが望ましい。可変フォントフォーマットの拡張はモーフィングアニメーションを可能にしますが、これはQtのフォントシステムが最適化された用途ではありません。したがって、フォントの可変軸をアニメーションさせることは、他のベクター画像フォーマットを使うよりも効率が悪くなります。
そのため、アニメーションや多色のベクター画像には、SVGのような形式を使うのが一般的です。単一色で静的なものについては、フォントを使用することは、ある種の利便性を持つオプションです。
注: Qt Quick Controls の標準アイコンサポートも参照してください。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.