Как создать объект градиента с Raphael

Наконец-то работаем со следующим:

pip3 uninstall sphinx
sudo su
cd ~
umask 022
pip3 install sphinx

Вот несколько ссылок, которые помогут следующему человеку:

https://stackoverflow.com/a / 26941559/9008686

https://stackoverflow.com/a/53117242/9008686

15
задан pimvdb 12 July 2011 в 18:02
поделиться

2 ответа

ОБНОВЛЕНИЕ: Переписанный для последнего Raphael API:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
  "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Linear Gradient</title>
  <script src="http://raphaeljs.com/raphael.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
  <script type="text/javascript" charset="utf-8">
    var paper = Raphael(10, 10, 800, 600);
    var circle = paper.circle(150, 150, 150);
    circle.attr({
      "fill": "90-#f00:5-#00f:95",
      "fill-opacity": 0.5
    });
  </script>
</body>
</html>

Документация для нового attr() API найден здесь.

19
ответ дан 1 December 2019 в 02:55
поделиться

Я не верю, что текущий API raphael позволяет вам устанавливать отдельные уровни непрозрачности, отличные от последнего, которому присваивается значение, переданное в атрибут "opacity", например:

this.ellipse(x, y, r, r).attr({stroke: "none", fill: "r(.5,.1)#ccc-#ccc", opacity: 0})

...будет иметь стоп-непрозрачность 0 на последней остановке. Для более тонкого контроля я добавил этот «кейс» к переключателю синтаксического анализа атрибута в моем raphael.js:

 case "opacityStops":
                            if (attrs.gradient) {
                                var gradient = doc.getElementById(node.getAttribute(fillString)[rp](/^url\(#|\)$/g, E));
                                if (gradient) {
                                    var stops = gradient.getElementsByTagName("stop");
                                    var opacs=value.split("-");
                                    for(var ii=0;ii<stops.length;ii++){
                                        stops[ii][setAttribute]("stop-opacity", opacs[ii]||"1");
                                    }
                                }
                                break;
                            }

Вы также должны добавить соответствующую запись в объект «availableAttrs», например:

availableAttrs = {<other attrs here>..., opacityStops:"1"}

Вызов для создания тогда круг с радиальным градиентом с разными ограничителями непрозрачности будет выглядеть так:

this.ellipse(x, y, r, r).attr({stroke: "none", fill: "r(.5,.5)#fff-#fff:70-#000", "opacityStops": "1-0-0.6"}
6
ответ дан 1 December 2019 в 02:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: