「note」に引っ越し中です。移動したページごとに移動先へのリンクを作っていく予定です。

Inkscapeで複数オブジェクトにまたがるグラデーションを設定する

 このページでは、Inkscapeを使って複数のオブジェクトにまとめて1つのグラデーションを設定する方法について考えてみました。

(2024.07.05更新)

 次のように複数のオブジェクトを描いておいて、その全体にグラデーションを設定したい場合、主に2つの方法があります。

 1つはこれらをパスとして「統合」や「結合」するという方法です。これなら図形全体でフィルは1つだけになるので、全体に1つのグラデーションを設定することはもちろん可能です。(「統合」や「結合」の詳細は「パスをつなぎ合わせる/切り離す」を)

 ただし、全体として1つのパスオブジェクトに変換することになるので、ストロークのスタイルも1種類に統一されますし、元の図形(矩形、円弧、星形)の編集機能(例えば星形の角を増減させる)も失われてしまいます。

 なお、オブジェクトをグループ化すれば可能なのではないか?というアイデアもありますが、グラデーションはオブジェクト単位の属性であって、グループには設定できないので、これはうまくいきません。

 もう1つの方法は、同じグラデーションの定義(色の変化の具合)を複数のオブジェクトに設定する方法です。グラデーションの定義情報それ自身はドキュメント中で各オブジェクトから独立したところに記憶されていて(詳しくは「グラデーションのデータ構造」を)、その中から好きなグラデーション定義を選択してオブジェクトに設定することができるので、複数のオブジェクトに対して同じグラデーションを選択すれば、見た目でも複数のオブジェクト全体に1つのグラデーションを設定したかのように見えます。

 以下、それをどうやって行うのかについてまとめていきます。

 まずグラデーション設定対象のオブジェクトを全部選択します。

 ここで普通の手順ではフィル/ストロークダイアログのグラデーションボタンを押しますが、このボタンは個々のオブジェクトにばらばらにグラデーションを設定することしかできないので、結果は次のように全体で1つのグラデーションではなくなります。

 グラデーションツールをクリックすると、

グラデーションパスが表示されますが、次のように個々のオブジェクトごとに違うグラデーション定義になっていることが分かります。

 やりたいことはグラデーションパスを1本だけ設定したいということなので、グラデーション設定対象のオブジェクトを全部選択しておいて、まずグラデーションツールをクリックし、マウスをドラッグして1本だけグラデーションパスを描きます。

 そうすると「グラデーションを作る」のほうでも書いたように複数のオブジェクトにまたがるようなグラデーションが設定されます。

 ところでこの状態は実はオブジェクトごとのグラデーション定義の配色と位置(グラデーションパスの分岐点など)がぴったり重なっているだけです。

 グラデーションパスのほうはマウスでドラッグすればぴったり重なったままで変形することが可能ですが、色のほうはまとめて変更する機能はありません。オブジェクトを全部選択しておいてフィル/ストロークダイアログで変更すればよさそうに思えますが、その機能(ばらばらのスタイルを1回の操作で変更する機能)がダイアログになく、次のような一種の警告メッセージが表示されてしまいます。

 そこでグラデーションの配色を変えたい場合はちょっと面倒ですが次のような手順を踏みます。

 まずオブジェクトをどれでもいいので1つだけ選択してフィル/ストロークダイアログで配色を変更します。

 こうするとドキュメント中に変更後のグラデーション定義が記憶されるので、他のオブジェクトにも同じ定義を適用します。

 全部のオブジェクトを選択しておいて、グラデーションツールをクリックすると、ツールコントロールバーにグラデーションの候補がメニュー化されて表示されます。

 このメニューでさきほどの変更後のグラデーション(上の例では「17」というラベルで表示されているもの)を選択すると、全部のオブジェクトにこのグラデーションが設定され、その結果複数のオブジェクト全体にまたがって1つのグラデーションで塗られているかのような見た目になります。