Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   как нарисовать графические полосы? (https://javascript.ru/forum/misc/24308-kak-narisovat-graficheskie-polosy.html)

czp 25.12.2011 19:53

как нарисовать графические полосы?
 
подскажите пожалуйста, как при помощи JS можно нарисовать такую штуку как на рисунке:
что бы от одного круга отходили полосы к другим, а те круги в свою очередь находятся на разных растояниях, и желательно что бы на конце полос были такие штуки как на рисунке,
как такое реализуется?не используя фреймворки, такое возможно вообше?
те круги, к которым идут полосы от главного, появляются рендомно

Livaanderiamarum 25.12.2011 19:58

бро вот тут все скажут
http://javascript.ru/forum/job/

czp 25.12.2011 20:08

а я просил что бы за меня сделали? я просил что бы мне подсказали

dmitriymar 25.12.2011 20:10

canvas

czp 25.12.2011 20:17

Цитата:

Сообщение от dmitriymar (Сообщение 145909)
canvas

так он вроде в IE7 - 8 не работает и фоксе ниже 4, а на этом белом свете есть еше такие уникалы которые юзают эти браузера
мне не то как круги нарисовать нужно, а сами те полосы, круги у меня есть и рендомно они появляются, я не знаю как полосы нарисовать

FINoM 25.12.2011 20:39

Raphael. Только я не знаю, как нарисовать дугу, кроме как кривыми Безье, с которыми не очень дружу. Если есть сильное желание, то разберетесь.

Nekromancer 25.12.2011 20:50

Цитата:

With Firefox 1.5, Firefox includes a new HTML element for programmable graphics. <canvas> is based on the WHATWG canvas specification, which itself is based on Apple's <canvas> implemented in Safari. It can be used for rendering graphs, UI elements, and other custom graphics on the client.
Под первым тоже сидят что ле?
А для ИЕ есть VML

Livaanderiamarum 25.12.2011 20:51

Цитата:

Сообщение от czp (Сообщение 145915)
так он вроде в IE7 - 8 не работает и фоксе ниже 4, а на этом белом свете есть еше такие уникалы которые юзают эти браузера
мне не то как круги нарисовать нужно, а сами те полосы, круги у меня есть и рендомно они появляются, я не знаю как полосы нарисовать

подсказываю SVG

dmitriymar 25.12.2011 20:54

Цитата:

Сообщение от czp
так он вроде в IE7 - 8 не работает

http://sourceforge.net/projects/excanvas/ подключить и будет работать.не всё, но для этого хватит
и кстати, в ФФ 3.6 канва работает

dmitriymar 25.12.2011 20:54

Цитата:

Сообщение от Livaanderiamarum
подсказываю SVG

;) почитай в доках с какой версии ие поддерживает SVG

czp 25.12.2011 20:58

а вообше ризонно так делать? SVG или КОНВАС, если мне всего то полоску провести, у меня есть блок(div)на весь экран, в котором рендомно появляются круги, что конвас что свг будет как имг, грубо говоря большой квадрат сделает с прозрачным фоном и на нем нарисует полоску от главного круга к вторичному,только будет находиться под блоком где где круги мои, это нормально?

Livaanderiamarum 25.12.2011 20:58

Цитата:

Сообщение от dmitriymar (Сообщение 145932)
;) почитай в доках с какой версии ие поддерживает SVG

точно, я просто верстаю под браузеры, в ие не особо разбираюсь)

czp 25.12.2011 20:59

Цитата:

Сообщение от dmitriymar (Сообщение 145931)
http://sourceforge.net/projects/excanvas/ подключить и будет работать.не всё, но для этого хватит
и кстати, в ФФ 3.6 канва работает

это хак на ЕИ8 - 7 что бы канвас поддерживал?

Livaanderiamarum 25.12.2011 20:59

Цитата:

Сообщение от czp (Сообщение 145933)
а вообше ризонно так делать? SVG или КОНВАС, если мне всего то полоску провести, у меня есть блок(div)на весь экран, в котором рендомно появляются круги, что конвас что свг будет как имг, грубо говоря большой квадрат сделает с прозрачным фоном и на нем нарисует полоску от главного круга к вторичному,только будет находиться под блоком где где круги мои, это нормально?

да, это нормально. и лучше круги тоже там реализовать.

dmitriymar 25.12.2011 21:00

Цитата:

Сообщение от czp
это нормально?

нормально
Цитата:

Сообщение от czp
это хак на ЕИ8 - 7 что бы канвас поддерживал?

да

czp 25.12.2011 21:01

что то там файла нет, не могу скачать

dmitriymar 25.12.2011 21:03

а пройти дальше по ссылкам и выйти сюда? не? или в гугле забить название и найти?

czp 25.12.2011 21:03

а все нашел вроде, на гугл они переехали,
всем спасибо за помощь, огромное спасибо

czp 25.12.2011 21:06

ха ха как ни странно но не работает хак, там даже в примерах в архиме не работает в ие 8

dmitriymar 25.12.2011 21:13

Цитата:

Сообщение от czp
ха ха как ни странно но не работает хак, там даже в примерах в архиме не работает в ие 8

как ни странно он работает:) подключал сам-просто необходимо прочитать доки как подключать его.
открою даже секрет -позволяет динамически создавать канву:)
а не работает у тех кто не смог пару действий сделать. помимо этой есть и другие библиотеки.

czp 25.12.2011 21:16

да я примеры в архиве смотрел не робят) в архиве с библиотекой)

czp 25.12.2011 21:16

в любом случаии спасибо огромное что то буду делать с этим)

dmitriymar 25.12.2011 21:22

Цитата:

Сообщение от czp
да я примеры в архиве смотрел не робят) в архиве с библиотекой)

вариант 1 найти библиотеку с рабочими примерами
вариант 2-браузер кривой(скрипт у него точно включен?)

czp 25.12.2011 22:02

да точно

czp 25.12.2011 22:33

такой вопрос, вот эти мои кружочки люди буту двигать(драг дропом), и к примеру их будет 10, при движении нужно что бы та полоска прорисовывалась(в реальном времени а не когда закончится движение кружка), сильно будет тормазить? или при таком раскладе нужен другой способ реализации полосок?

Pavel M. 25.12.2011 22:38

такой пример http://raphaeljs.com/graffle.html
возможно, поможет выбрать библиотеку

czp 25.12.2011 22:53

да я его видел, но там SVG, вот именно такое и хочу реализовать, особенно как линии сгибаются клево

trikadin 26.12.2011 00:00

czp, то что вы тут пишете, удивительно напоминает один плагин для jQuery. Если он вам это нужно для использования - гуглите в сторону плагинов для jq. Если хотите реализовать "для себя" - вперёд, учить API графических инструментов и их особенности в разных браузерах.

FINoM 26.12.2011 00:46

Цитата:

Сообщение от czp
да я его видел, но там SVG

А чем SVG не нравится?
И на всякий случай: для IE8- там используется VML.

dmitriymar 26.12.2011 00:51

FINoM,
кста ,хотел тебя давно спросить как ты SVG и VML совмещаешь?
в случае кросбраузерной работы с SVG документ ХHTML(опера к сож не работает(ла) с SVG в НTML), а VML-HTML?

FINoM 26.12.2011 00:57

Цитата:

Сообщение от dmitriymar
кста ,хотел тебя давно спросить как ты SVG и VML совмещаешь?

Меня? Я типа спец? :D
Никак не совмещаю, с VML напрямую никогда не работал (когда-то пытался, но забил). А SVG встраивается корректно в поддерживаемые браузеры (HTML или XHTML, пофиг) только с помощью XML DOM (createElementNS и пр.). Пример из моего говнокода: https://github.com/finom/jQuery-Gaus...an-blur.js#L61

dmitriymar 26.12.2011 01:04

Цитата:

Сообщение от FINoM
Меня? Я типа спец?

не так много народа юзают SVG.
Цитата:

Сообщение от FINoM
только с помощью XML DOM (createElementNS и пр.).

не,налетел в опере(в последней версии на тот момент) летом прошлым,не динамический svg работал только с XHTML документами-хотя во всех остальных популярных всё было норм. Насколько понял причина в том,что поддержку SVG ввели в НTML5. а Опера тогда(сейчас?) ещё не реализовала поддержку.
так что мысль совмещать VML И SVG изза этого отпала..

FINoM 26.12.2011 01:13

Хочешь встраивать SVG прямо на страницу? Типа
<div><svg>...</svg></div>

dmitriymar 26.12.2011 01:17

да вот в принципе один из вариантов мучения с оперой тогда-другие найти не могу...Работает везде кроме оперы,подобное было и с HTML в ней-точный код не работы в HTML найти не могу..
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Документ без названия</title>
<style type="text/css">
#apDiv1 {
	position:absolute;
	left:221px;
	top:35px;
	width:448px;
	height:331px;
	z-index:1;
}
</style>
</head>

<body>

<div >
  <svg version = "1.1"
     baseProfile="full"
                                  xmlns = "http://www.w3.org/2000/svg" 
                                  xmlns:xlink = "http://www.w3.org/1999/xlink"
                                  xmlns:ev = "http://www.w3.org/2001/xml-events"
     height = "400px"  width = "400px" onclick="qw()">
     <rect x="0" y="0" width="400" height="400" 
          fill="silver" stroke="blue" stroke-width="5px" stroke-opacity="0.5"/>
     <g fill-opacity="0.7" stroke="red" stroke-width="10px" >
        <circle cx="200px" cy="200px" r="100px" fill="red"   transform="translate(  0,0)"  />
        <circle cx="200px" cy="200px" r="100px" fill="blue"  transform="translate( 0, -200)" />
        <circle cx="200px" cy="200px" r="100px" fill="green" transform="translate(0, 200)" />
     </g>
</svg>
</div>

</body>
</html>


потом нашел что изменить для кросбраузерности,но факт остался фактом -кросбраузерная работа с SVG -только в XHTML файлах. VML -работает только в HTML

FINoM 26.12.2011 01:19

Как вариант, можно написать парсер, который обрабатывает SVG и вставляет новый, с правильными пространствами имен.

Nekromancer 26.12.2011 01:23

Цитата:

Сообщение от FINoM
Хочешь встраивать SVG прямо на страницу? Типа
<div><svg>...</svg></div>

FINoM,
это тоже нифига не кроссбраузерно. Самое кроссбраузерное это из скрипта. Ну не считая embed и всё такое.

FINoM 26.12.2011 01:25

Цитата:

Сообщение от Nekromancer
это тоже нифига не кроссбраузерно. Самое кроссбраузерное это из скрипта.

Я вот и предлагаю брать скриптом то, что в документе, обрабатывать и возвращать обратно.

dmitriymar 26.12.2011 01:25

Ceйчас поставил Оперу 11.60 -в ней код работает. перед обновлением и выкладыванием кода на сайт проверял в более старой версии ,но не намного.
Цитата:

Сообщение от FINoM
Как вариант, можно написать парсер, который обрабатывает SVG и вставляет новый, с правильными пространствами имен.

если ты об <svg:ns>-не помогало или чегото в этом роде-уже не помню что писал и где писал))).
Дело по ходу не в пространстве имён ,а в заголовке документа

вот ещё одно http://javascript.ru/forum/events/24...tml#post145034
строки 94-95. тоже в каком то браузере был глюк-пришлось вводить это

FINoM 26.12.2011 01:40

Цитата:

Сообщение от dmitriymar
если ты об <svg:ns>-не помогало.

Я имею в виду так:
var svg = querySelector('svg');
var newSvg = document.createElementNS(svgns, 'svg');
...
// здесь берем все атрибуты svg, копируем в newSvg с пространствами имен, если есть таковые
// потом рекурсивно проходим по всем детям svg и так же создаем новые элементы, вставляя их в родительский
var tagName = childElement.tagName;
var newChildElement = document.creatElementNS(svgns, tagname);
...
//берем атрибуты из childElement, копируем в newChildElement, вставляем новый элемент в родительский...

Я не помню функций наизусть, поэтому только идея.

dmitriymar 26.12.2011 01:48

я понял твою мысль,да это сработает при правильных заголовках документа. Момент с оперой был -что если заголовки не те -то не работает вообще никак.
ты ведь из HTML документа не сделаешь XHTML документ .
не заменишь <!DOCTYPE html на
<?xml version="1.0"?>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" >
Только об Опере говорим(пред версии) -в других нет потребности городить такое


Часовой пояс GMT +3, время: 10:33.