Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 19.06.2018, 12:40
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

MC-XOBAHCK,
Насчет вращения:
Перед и после строки 35 впишите

Код:
     strelka.translate(x,y);
35   strelka.rotate((Math.PI / 180) * deg);
     strelka.translate(-x,-y);

Последний раз редактировалось Dilettante_Pro, 19.06.2018 в 12:42.
Ответить с цитированием
  #12 (permalink)  
Старый 19.06.2018, 13:07
Аватар для MC-XOBAHCK
Профессор
Отправить личное сообщение для MC-XOBAHCK Посмотреть профиль Найти все сообщения от MC-XOBAHCK
 
Регистрация: 06.08.2017
Сообщений: 473

Dilettante_Pro, СПАСИБО! Код поправил. Теперь при повороте без смещения.
Теперь понял как это работает. Это типо как в CSS с абсолютным позиционированием - топ/лефт 50%, а потом по минус 50% от маржинов и мы по центру.
Ответить с цитированием
  #13 (permalink)  
Старый 19.06.2018, 13:14
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

MC-XOBAHCK,
Просто центр вращения надо задать.
Ответить с цитированием
  #14 (permalink)  
Старый 19.06.2018, 13:16
Аватар для MC-XOBAHCK
Профессор
Отправить личное сообщение для MC-XOBAHCK Посмотреть профиль Найти все сообщения от MC-XOBAHCK
 
Регистрация: 06.08.2017
Сообщений: 473

И баг похоже нашёл.
Поставил
console.log(v);

Результат:
["0", "0", "0400", "0", "030", -3, "0", "0", "030", "03", 370, -3, "0400", "0", 370, "03"]

console.log(typeof v[15]);

Результат: string

Наслаживал...
Ответить с цитированием
  #15 (permalink)  
Старый 19.06.2018, 14:00
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Сообщение от MC-XOBAHCK
И баг похоже нашёл.
Да, плюсики... Хотел было написать - но вы и сами справились!
Ответить с цитированием
  #16 (permalink)  
Старый 19.06.2018, 14:38
Аватар для MC-XOBAHCK
Профессор
Отправить личное сообщение для MC-XOBAHCK Посмотреть профиль Найти все сообщения от MC-XOBAHCK
 
Регистрация: 06.08.2017
Сообщений: 473

Сообщение от Rise Посмотреть сообщение
Относительно стрелок получается что:
1. Размер: меньше, нормально, больше - это масштаб
2. Ориентация: горизонтально, вертикально - это поворот
3. Появился новый пункт - это перемещение origin
Я вроде два из трёх пункта реализовал (разумеется не без посторонней помощи). Идея правильная.
А вот с масштабированием - наверное в моём случае с размерными стрелками оно не нужно. У меня толщина линии одна и та же, и делать толще её не нужно. Просто при малых размерах сами указатели стрелок меняются (поставил условие через свич на длину стрелки), чтобы допустим при 60px длины стрелки указатели не съехались, а визуально оставалась стрелочка.
Параметры свича я со временем подгоню.

Против функции ничего не имею, если честно - я её пока не понимаю и не могу внедрить. Я вон канвас только пару дней назад для себя открыл.
Ответить с цитированием
  #17 (permalink)  
Старый 25.06.2018, 14:57
Аватар для MC-XOBAHCK
Профессор
Отправить личное сообщение для MC-XOBAHCK Посмотреть профиль Найти все сообщения от MC-XOBAHCK
 
Регистрация: 06.08.2017
Сообщений: 473

Добрый день!
А можете подсказать, возможно ли сделать скачивание canvasa?
В контекстном меню браузера, если навести курсор на канвас и нажать правую кнопку мышки, есть пункт "Сохранить картинку как...".
А можно ли это как то повесить на кнопку?

<canvas style="border:1px solid black"></canvas>
<button id="download">Скачать</button>

<script>
  const canvas = document.querySelector('canvas');
  if (canvas.getContext) {
    var ctx = canvas.getContext('2d');

    ctx.fillRect(25,25,100,100);
    ctx.clearRect(45,45,60,60);
    ctx.strokeRect(50,50,50,50);
  }

// Скачать Canvas
document.querySelector('#download').addEventListener('click', function ( ) {
    //?????
})
</script>
Ответить с цитированием
  #18 (permalink)  
Старый 25.06.2018, 16:08
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

<canvas style="border:1px solid black"></canvas>
<a href="" download="my-file-name.png" href="#"><button id="download">Download</button></a>

<script>
  const canvas = document.querySelector('canvas');
  if (canvas.getContext) {
    var ctx = canvas.getContext('2d');

    ctx.fillRect(25,25,100,100);
    ctx.clearRect(45,45,60,60);
    ctx.strokeRect(50,50,50,50);
  }

// Скачать Canvas
document.querySelector('#download').addEventListener('click', function(){
    var dataURL = canvas.toDataURL('image/png');
    document.querySelector('a').href = dataURL;
});
</script>
Ответить с цитированием
  #19 (permalink)  
Старый 25.06.2018, 18:24
Аватар для MC-XOBAHCK
Профессор
Отправить личное сообщение для MC-XOBAHCK Посмотреть профиль Найти все сообщения от MC-XOBAHCK
 
Регистрация: 06.08.2017
Сообщений: 473

j0hnik, спасибо за решение.
Скачал с вашего решения - работает.
У меня же скачивает пустой файл. Может быть причина из за того что у меня на локалке, а не на cервере?

Думал может из за того что у меня канвас генерируется, исправил код на всплытие но не помогло:
<div class="editor">
    <canvas></canvas>
    <a href="" download="my-file-name.png" href="#">
        <button id="download">Скачать</button>
    </a>
</div>

Скрипт:
document.querySelector('.editor').addEventListener('click', function (event) {
    if (event.target.id == 'download') {
        let canvas = event.target.parentNode.parentNode.querySelector('canvas');
        var dataURL = canvas.toDataURL('image/png');
        document.querySelector('a').href = dataURL;
    }
})
Ответить с цитированием
  #20 (permalink)  
Старый 26.06.2018, 03:43
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Сообщение от MC-XOBAHCK
У меня же скачивает пустой файл. Может быть причина из за того что у меня на локалке, а не на cервере?
Это вряд ли. в ФФ тоже не пашет?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите понять код Navira Общие вопросы Javascript 2 08.09.2016 14:56
Помогите понять) Garet jQuery 4 08.04.2015 20:59
Народ помогите бьюсь уже неделю не магу понять apercot Javascript под браузер 7 06.11.2014 14:08
Помогите с canvas rikod Общие вопросы Javascript 0 08.10.2012 09:48
Анимация. Помогите понять почему не работает. kadurban jQuery 4 08.07.2010 20:50