2013-04-11 5 views
0

Мне нужно выяснить, как узнать, находится ли точка начала холста сверху/слева или центр/центр или что-то еще. Возможно, способ получить координаты точки начала (даже если я знаю, что координаты точки начала в центре/центре также равны 0, 0).Определяет исходную точку холста (javascript)

У меня есть несколько холстов, которые я конвертирую в изображение с помощью функции toDataUrl. Перед преобразованием мне нужно установить цвет фона на эти холсты. Таким образом, чтобы сделать это:

var curContext = curCanvas.getContext('2d'); 
curContext.globalCompositeOperation = "destination-over"; 
curContext.fillStyle = '#FFFFFF'; // or random color 
curContext.fillRect(0, 0, curCanvas.width, curCanvas.height); 
var image = curCanvas.toDataURL('image/jpeg', 1)); 

Этого код работает с холстом с начальной точкой в ​​верхнем/влево, но некоторый холсте (сгенерированный puglin как гипердерево) имеет точку начала координат в центре/центр таким образом мой FillRect должен быть как это:

curContext.fillRect(-curCanvas.width/2, -curCanvas.height/2, curCanvas.width, curCanvas.height); 

Итак, мне нужно знать для холста, что точка начала знать, как использовать функцию fillRect (х и у) аргументы.

Благодарим за помощь!

+0

показать код и что вы пытаетесь сделать. если вы просто спрашиваете, где происхождение находится на холсте, его верхний левый – kennypu

+0

Это ваш реальный вопрос .. ?? Более короткие PLS –

+0

Хорошо, извините, ребята. Вопрос отредактирован! – user2269617

ответ

1

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

Вы можете переопределить эту матрицу преобразования при сохранении текущего состояния данного контекста, установив новую матрицу, а затем восстановить исходное состояние:

ctx.save(); 
ctx.setTransform(1, 0, 0, 1, 0, 0); // identity 
// do your drawing 
ctx.restore(); 

Более новые версии Canvas API имеют ctx.resetTransform(), а также позволяют запросить текущая матрица трансформации, но они пока не получили широкой поддержки.

+0

В целом, матрица преобразования - это то, что мне нужно. Большое спасибо ! – user2269617