我正在尝试找出 4 向渐变填充的最佳模型。我最新的模型是这个小提琴:
<svg height="360" width="400" xmlns="http://www.w3.org/2000/svg" version="1.1">
<defs>
<clipPath id="C">
<path d="M 100 200 L 300 58 L 400 250 L 300 341 Z" />
</clipPath>
<radialGradient id="G1" cx="50%" cy="50%" r="50%" fx="50%" fy="50%">
<stop offset="0%" style="stop-color:rgb(255,0,0); stop-opacity:1" />
<stop offset="100%" style="stop-color:rgb(128,128,64); stop-opacity:0" />
</radialGradient>
<radialGradient id="G2" cx="50%" cy="50%" r="50%" fx="50%" fy="50%">
<stop offset="0%" style="stop-color:rgb(0,255,0); stop-opacity:1" />
<stop offset="100%" style="stop-color:rgb(128,128,64); stop-opacity:0" />
</radialGradient>
<radialGradient id="G3" cx="50%" cy="50%" r="50%" fx="50%" fy="50%">
<stop offset="0%" style="stop-color:rgb(0,0,255); stop-opacity:1" />
<stop offset="100%" style="stop-color:rgb(128,128,64); stop-opacity:0" />
</radialGradient>
<radialGradient id="G4" cx="50%" cy="50%" r="50%" fx="50%" fy="50%">
<stop offset="0%" style="stop-color:rgb(255,255,0); stop-opacity:1" />
<stop offset="100%" style="stop-color:rgb(128,128,64); stop-opacity:0" />
</radialGradient>
</defs>
<ellipse cx="100" cy="200" rx="200" ry="200" clip-path="url(#C)" fill="url(#G1)" />
<ellipse cx="300" cy="58" rx="200" ry="200" clip-path="url(#C)" fill="url(#G2)" />
<ellipse cx="400" cy="250" rx="200" ry="200" clip-path="url(#C)" fill="url(#G3)" />
<ellipse cx="300" cy="341" rx="200" ry="200" clip-path="url(#C)" fill="url(#G4)" />
</svg>
结果是:
但是当我改变<ellipse>
元素的顺序时(见这个小提琴):
<ellipse cx="100" cy="200" rx="200" ry="200" clip-path="url(#C)" fill="url(#G1)" />
<ellipse cx="300" cy="58" rx="200" ry="200" clip-path="url(#C)" fill="url(#G2)" />
<ellipse cx="300" cy="341" rx="200" ry="200" clip-path="url(#C)" fill="url(#G4)" />
<ellipse cx="400" cy="250" rx="200" ry="200" clip-path="url(#C)" fill="url(#G3)" />
结果更改为:
这意味着透明度的计算方式不同。无论元素的顺序如何,我都希望始终以相同的结果计算透明度。这个问题的解决方案是什么?