2013-04-24 1 views
0

У меня проблема с использованием fabric.js в холсте. После изменения размера с коэффициентом масштабирования в 5 раз, щелкнув ZoomIn 2 раза, элементы на холсте исчезнут. Пожалуйста, смотрите: http://jsfiddle.net/ptCoder/Q3TMA/90/Элементы на холсте исчезают w/jsfiddle

размер холста (только для примера):

<canvas id="c" width="400" height="400"></canvas> 

Увеличить Масштаб фактор:

var SCALE_FACTOR = 5; 

Есть ли решение?

Thank you.

ответ

1

Проблема в том, что вы также изменяете размер холста, поэтому после масштабирования 2 раза его размер составляет 10000 пикселей * 10000 пикселей, что означает 100 мегапикселей и требуется несколько сотен мегабайт памяти.

Если вы сохраняете размер холста постоянным (например, this) или ограничиваете его значением, достаточно маленьким, масштабирование работает, как ожидалось.

Чтобы сохранить размер постоянной вы просто должны удалить эти две строки:

canvas.setHeight(canvas.getHeight() * SCALE_FACTOR); 
canvas.setWidth(canvas.getWidth() * SCALE_FACTOR); 
+0

@ptCoder: Точно, ваши элементы не пошли! После 2x увеличения, они просто за пределами холста вниз и вправо. Обратите внимание на полосы прокрутки, которые появляются после масштабирования. Просто прокрутите вниз и вправо, и ваши элементы все еще там. – markE

+0

Благодарим вас за ответ. Но мне нужно сделать большой холст для преобразования холста в, например, 300 или 600 DPI. Мне нужен большой размер холста. Есть ли решение? – ptCoder

+0

@markE, Что браузер, который вы используете? Один новый пример с холстом с разрешением 10000x10000 пикселей. Вы щелкаете в ZoomIn 6/7 раз, и полотно исчезает полностью. Пожалуйста, проверьте это: http://jsfiddle.net/ptCoder/Q3TMA/95/ – ptCoder

 Смежные вопросы

  • Нет связанных вопросов^_^