Задать вопрос
Ответы пользователя по тегу JavaScript
  • Как масштабировать svg при прокрутке колесика мвши?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    Не являюсь сильным специалистом в svg, но основной подход такой:
    смещаем все так, чтобы мышка оказалась в начале координат,
    затем масштабируем,
    затем перемещаем обратно.

    Для этого нужно рассчитать матрицу преобразования, которая будет представлять из себя матричное произведение трех матриц: матрица переноса на (-Xмыши,-Yмыши), матрица масштабирования на scale, матрица переноса на (Xмыши, Yмыши).

    Подобное реализовывал на c#:

    protected override void OnMouseWheel(MouseEventArgs e)
            {
                if (isAllowTransfom)
                {
                    var transform_local = transform.Clone();
    
                    var matrixOrder = MatrixOrder.Append;
                    var K = e.Delta > 0 ? SCALE_MUL : 1 / SCALE_MUL;
    
                    transform_local.Multiply(new Matrix(1, 0, 0, 1, -e.Location.X, -e.Location.Y), matrixOrder);
                    transform_local.Multiply(new Matrix(K, 0, 0, K, 0, 0), matrixOrder);
                    transform_local.Multiply(new Matrix(1, 0, 0, 1, e.Location.X, e.Location.Y), matrixOrder);
                    transform = transform_local;
    
                    OnViewWindowChanged(transform);
                }
    
                base.OnMouseWheel(GetWorldMouseEventArgs(e));
            }


    То есть у меня есть матрица transform, в которой содержится с каким смещением и каким масштабом отрисована картинка. При вращении колесика мыши мы эту матрицу модифицируем и все перерисовываем.
    P.S. Очень важен порядок перемножения матриц.
    Ответ написан
    Комментировать
  • Как из приложения c# добавить в head html script jquery?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    В первую очередь надо попробовать у webKitBrowser`а дернуть методы Refresh или Update, хотя скорее всего это не должно принести результата, потому что скорее всего WebKit куда-то в свой буфер рендерит и по этим методам просто обновляет экран из буфера.

    А зачем вообще нужна такая функциональность к браузере? Если на страничке используется jQuery, то и добавляй, пожалуйста, в страничке его. Если не используется, то и не нужен он. Или подразумевается еще какой-нибудь скрипт до кучи/или вместо грузить? Снифер там или что еще? =)

    По идее загрузка и отображение странички в браузере идет, если упрощенно, так: загрузка->построение DOM->рендеринг. Причем современные броузеры делают это потоково, то есть постепенно отображая загруженное, но в некоторых случаях могут и все перерендерить (например при изменении размера окна). В вашем случае нужно вклиниться где-то в процесс загрузки заголовка или добавление в DOM заголовка, но что-то я не увидел в WebKit.NET хуков/событий для такой возможности.

    Можно попробовать сделать фиктивное масштабирование или искусственно вызвать событие изменение размера окна, но это грязный хак.

    Ну а что то похожее на правду можно сделать, если реализовать некий прокси, через который направить http-трафик, на лету искать заголовок и вставлять ваш скрипт.
    Ответ написан
    4 комментария
  • Стоит ли изучать JavaScipt и C# одновременно с нуля?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    Расскажу свои субъективные впечатления.
    Я достаточно неплохо знаю С# и сравнительно недавно начал изучать JS.
    Сначала С# тебя "ведет" в обучении, он не дает делать совсем глупые вещи, он обучает тебя ООП. Конечно, можно писать на С# и в процедурном стиле, но в основном в книгах и видеоуроках вас будут учить в С# объектно-ориентированному программирования, а потом через несколько лет вы (возможно =) ) придете к паттернам проектирования.

    С JSом все не так. В JS можно много того что нельзя в С#. JS - это свобода самовыражения. Нужно четко понимать: что вы хотите сделать и как вы это хотите сделать и почему нельзя делать по другому, хотя это проще. Я бы назвал JS даже не языком, а метаязыком. Чтобы работать с JS нужно самому определить себе правила и им следовать (С# сам эти правила задавал). А вот какие выбрать правила, тут уже нужен опыт.

    С# можно изучать самостоятельно легко и ненапряжно, а для JS нужны определенные знания и опыт. Я думаю можно совместить, но, по моему мнению, в таком случае для JS нужен хороший живой наставник.
    Ответ написан
    2 комментария