2012-12-19 3 views
9

私はadditive colorの効果を作り出すためにどのように不正行為をするか知っています。同じ基本的な解決策がanother post on hereで提案されています。付加的な色の混合のためのSVGの使用(添加混合)

上記のポストは透明な.pngファイルを参照していますが、コンセプトは同じです。作成したい基本的な効果は、pictured hereのようなものです。

私はSVGでそれを行うのが大好きなので、拡大縮小できるので、トピックを話しているときに(トピックが「緑色」と言いましょう)、グラフィックのその部分を拡大することができます重なり合う領域は依然として正しく表示されます。

これらのポストはかなり近い取得するように見える:

しかし、SVGと上記の契約のいずれもので、私はそれを旋回を与えてみましょう。

+0

私はちょうどログインして、以下の答えを見て、それは私が考えていたものと同じように見えるが、...私はAdobe Illustratorでグラフィックを作成したが、完全に不透明な色で;私はそれが助けになるとは思わない...通常の透明性を持つ3層(3つのオーバーラップリング)のグラフィックは、フィドルの仕事に投稿されますか? –

答えて

2

このバージョンは、真にクロスブラウザではなかった以前のバージョンを置き換えます。私は、さまざまなサークルのために別々のシェイプを必要とせず、フィルタ内の元のシェイプを複製し、再配置し、再描画できることに気付きました。

<svg x="0px" y="0px" width="600px" height="600px" viewbox="0 0 600 600"> 

<defs> 
<filter id="B4" x="-150%" width="400%" y="-150%" height="400%"> 
    <feOffset in="SourceGraphic" result="pre-red" dx="-70" dy="-120"/> 
    <feColorMatrix in="pre-red" type="matrix" result="red" values="0 0 0 0 1 
                0 0 0 0 0 
                0 0 0 0 0 
                0 0 0 1 0"/> 

    <feOffset in="SourceGraphic" result="pre-blue" dx="70" dy="-120"/> 
    <feColorMatrix in="pre-blue" type="matrix" result="blue" values="0 0 0 0 0 
                0 0 0 0 0 
                0 0 0 0 1 
                0 0 0 1 0"/> 
    <feBlend mode="screen" in="red" in2="blue" result="main"/> 
    <feBlend mode="screen" in="main" in2="SourceGraphic"/> 
</filter> 
</defs> 

    <circle filter="url(#B4)" cx="200" cy="250" r="100" fill="#00FF00" /> 

</svg> 
+0

MozillaとWebkitではうまくいきません。 「フィルタ」エフェクト(最初の例)に関連する詳細情報の方向を教えてください(またはもう少し説明してください)。それを見て、私は基本的にそれを得るように感じるが、黄色やシアン(私は最終的には白であると仮定する)も黒のストロークも見ないストロークに割り当てられていますか?)。ありがとう。 –

+0

私は 'enable-background'リファレンスとノートを見ましたが、私は戻ってより慎重にそれらを読むでしょう、ありがとう。 –

8

今すぐSVG filtersでこれを行うことができます。色を混在させることに興味があるので、次のフィルタプリミティブを調べることに興味があります:feBlendfeCompositefeColorMatrixおよびfeComponentTransfer

簡単な方法(Inkscape)を学びたい場合はthis blogpostを参照してください。私はInkscape bookを読むことをお勧めします。特に行う方法はcustom filtersです。 Here's one pageにはfeBlendが表示され、基本的なエフェクトの例と同様の結果が得られます。

更新:here's the relevant svg file Inkscapeのブックから、それは(GeckoはBackgroundImageenable-backgroundをサポートしていないことに注意してください、とBackgroundImageフィルタ入力)、SVGフィルターをサポートするブラウザで、以下の画像のようになります。 feBlend variations

+0

標準の一環として、これらのフィルターについて聞いたこともありませんでした。一見すると、私は 'fe'が何らかのベンダー接頭辞かもしれないと思った、少年は間違っていた。ありがとう。 –

+1

これらの例の問題は、 "enable-background"に依存しているということです。これは、今のところWebkitやMozillaのどちらでも動作しません(オペラについてはわかりません)。フィルタを使用してこれを行う場合は、画像を取り込む(または照明効果を使ってカラーサークルを作成する)必要があると思います。 –

+0

例はおそらく 'enable-background'を使用しますが、それを避けることも可能です。はい、Operaは 'enable-background'を長い間サポートしています。 IIRC IE10は 'enable-background'もサポートしています。 –

関連する問題