2013-04-30 2 views
1

Я работаю над приложением для рисования, и я пытаюсь центрировать холст на середине экрана. Любые попытки, которые я сделал, были отключены (все еще в верхнем левом углу экрана), но визуально отображались в центре экрана. В принципе, он не рисует на холсте, когда я переместил его в центр экрана. Любая помощь будет высоко ценится, спасибо .... Я ИМЕЮ мой код НИЖЕ ...HTML5 Canvas (ПРОСТОЕ ПРИМЕНЕНИЕ КРАСКИ)

+0

Ваш код не указан ниже. –

+0

Я не могу написать свой код, потому что моя репутация ниже 10. В любом месте я могу опубликовать его, чтобы вы могли видеть? –

+0

[jsfiddle] (http://jsfiddle.net/) было бы лучше, чем ничего. –

ответ

0

Это не ясно из вашего вопроса, как вы центрирования, но вы должны учитывать любое смещение элементов, укажите canvas, когда вы попытаетесь отобразить положение мыши в позиции на canvas. Вы можете сделать это, включив значения offsetLeft и offsetTop (см. docs) содержащего элемента при выполнении ваших расчетов.

Ниже будет работать, если вы компенсируя позицию div, которая облегает canvas (который я дал идентификатор, чтобы сделать его проще ссылаться):

function move(e) { 

    // Get the div containing the canvas. Would be more efficient to set this once on document load 
    var container = document.getElementById('container'); 

    if((e.button == 0) && (mouseIsDown)) { 
     g.beginPath(); 
     document.onselectstart = function(){ return false; } 
     //g.fillStyle = "red"; 
     // Account for the offset of the parent when drawing to the canvas 
     g.arc((e.x - container.offsetLeft) - brush, (e.y - container.offsetTop) - brush, brush, 0, Math.PI * 2); 
     g.fill(); 
     g.closePath(); 
    } 
} 

И упрощенным демо с помощью ваша скрипка here.

+0

Спасибо, я сменил div на 525px; top: 250px; и он положил его в центр, это было бы приемлемо? Как это работает? –

+0

Вы, вероятно, не хотите полностью позиционировать его, если хотите, чтобы он был центрирован независимо от размера окна. Я просто сделал это так, потому что это был быстрый способ продлить тест. Я бы предположил использовать что-то вроде margin: 0 auto. Но в любом случае метод должен работать. –

+0

О, хорошо, спасибо, очень много вы спасли мне много неприятностей, я был застрял в течение долгого времени! Еще раз спасибо! –