2012-12-19 11 views
9

Pochodzę z tła graficznego Wiem, jak oszukiwać, aby stworzyć efekt additive color. To samo podstawowe rozwiązanie zaproponowano w another post on here.Używanie SVG do dodatkowego mieszania kolorów (mieszania dodatków)

Powyższy post dotyczy przezroczystych plików .png, ale koncepcja jest taka sama. Podstawowy efekt, który chciałbym stworzyć, jest taki, jak ten pictured here.

Chciałbym zrobić to w SVG, aby można było skalować i tak, że gdy mówię o danym temacie (powiedzmy, że temat jest "zielony"), mogę powiększyć tę część grafiki i zachodzące obszary będą nadal wyświetlane poprawnie.

Stanowiska te wydają się dość blisko:

Ale żaden z powyższej umowy z SVG więc pozwól mi dać jej wir.

+0

po prostu zalogować się i zobaczył poniżej odpowiedź, szumiące to wygląda na to, dokładnie to, co miał na myśli, ale ... I stworzył grafikę w programie Adobe Illustrator ale realizowane regularne przejrzystość da mi kolor dodatków więc symulowane z całkowicie nieprzezroczystymi kolorami; Nie sądzę, że to pomoże ... czy 3-warstwowy (3 zachodzące na siebie pierścienie) graficzny z regularną przezroczystością wysłany do pracy skrzypce? –

Odpowiedz

2

Ta wersja zastępuje starszą wersję, która nie była prawdziwie w różnych przeglądarkach. Zdałem sobie sprawę, że nie potrzebuję osobnych kształtów dla różnych kręgów, mogę klonować, zmieniać położenie i ponownie kolorować pierwotny kształt w filtrze.

<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

Nie działa w Mozilla i Webkit jest zdecydowanie breaker ofertę. Czy możesz wskazać mi w kierunku więcej informacji (lub wyjaśnić nieco więcej) dotyczących efektów "w filtrze" (pierwszy przykład)? Patrząc na to, czuję, że w zasadzie to dostaję, ale nie widzę niczego, co mogłoby stworzyć żółty lub cyjan (zakładam "końcowy" jest biały) ani nie widzę czarnego obrysu (to dlatego, że nie ma szerokości przypisane do udaru?). Dzięki. –

+0

Widziałem referencje "włączania tła" i notatki, wrócę i przeczytam je jeszcze uważniej, dzięki. –

8

Teraz możesz to zrobić za pomocą SVG filters. Ponieważ twoje zainteresowanie polega na mieszaniu kolorów, możesz zainteresować się badaniem następujących prymitywów filtrów: feBlend, feComposite, feColorMatrix i feComponentTransfer.

Jeśli chcesz się uczyć w łatwy sposób (Inkscape), zobacz this blogpost. Mogę również polecić lekturę Inkscape book, aw szczególności, jak wykonać custom filters. Here's one page przedstawiający feBlend z podobnymi wynikami, jak w przykładzie z podstawowym efektem.

Aktualizacja:here's the relevant svg file z książki Inkscape, powinno to wyglądać jak na zdjęciu poniżej w przeglądarkach obsługujących filtrów SVG (a wejście BackgroundImage filtra należy pamiętać, że Gecko nie obsługuje BackgroundImage i enable-background). feBlend variations

+0

Nigdy nie słyszałem o tych filtrach jako części standardu! Na pierwszy rzut oka myślałem, że "fe" może być jakimś prefiksem sprzedawcy, chłopiec myliłem się. Dzięki. –

+1

Problem z tymi przykładami polega na tym, że polegają one na "włączaniu tła" - które nie działa teraz ani w przypadku webkita, ani mozilli (nie wiem o operze). Jeśli zamierzasz to zrobić za pomocą filtrów, myślę, że musisz pobierać obrazy (lub tworzyć kolorowe kręgi za pomocą efektów świetlnych). –

+0

Przykłady mogą używać 'enable-background, ale można tego uniknąć. Tak, Opera ma wsparcie dla 'enable-background przez długi czas. IIRC IE10 obsługuje również 'enable-tło. –

Powiązane problemy