Все ли размеры тега canvas указаны в пикселях?
Я спрашиваю, потому что я понял, что это так.
Но моя математика нарушена, или я просто чего-то не понимаю.
Я в основном занимался питоном и просто вернулся к Java Scripting.
Если я просто делаю что-то глупое, дай мне знать.
Для игры, которую я пишу, я хотел иметь блочный градиент.
У меня есть следующее:
HTML
<canvas id="heir"></canvas>
CSS
@media screen {
body { font-size: 12pt }
/* Game Rendering Space */
canvas {
width: 640px;
height: 480px;
border-style: solid;
border-width: 1px;
}
}
JavaScript (Shortened)
function testDraw ( thecontext )
{
var myblue = 255;
thecontext.save(); // Save All Settings (Before this Function was called)
for (var i = 0; i < 480; i = i + 10 ) {
if (myblue.toString(16).length == 1)
{
thecontext.fillStyle = "#00000" + myblue.toString(16);
} else {
thecontext.fillStyle = "#0000" + myblue.toString(16);
}
thecontext.fillRect(0, i, 640, 10);
myblue = myblue - 2;
};
thecontext.restore(); // Restore Settings to Save Point (Removing Styles, etc...)
}
function main ()
{
var targetcontext = document.getElementById(“main”).getContext("2d");
testDraw(targetcontext);
}
Для меня это должно дать серию 640w на 10h пикселей. В Google Chrome и Fire Fox я получаю 15 баров. Для меня это означает, что (480/15) - это 32 пиксельных баров.
Поэтому я изменяю код на:
function testDraw ( thecontext )
{
var myblue = 255;
thecontext.save(); // Save All Settings (Before this Function was called)
for (var i = 0; i < 16; i++ ) {
if (myblue.toString(16).length == 1)
{
thecontext.fillStyle = "#00000" + myblue.toString(16);
} else {
thecontext.fillStyle = "#0000" + myblue.toString(16);
}
thecontext.fillRect(0, (i * 10), 640, 10);
myblue = myblue - 10;
};
thecontext.restore(); // Restore Settings to Save Point (Removing Styles, etc...)
}
И получите реальный результат в 32 пикселя для сравнения. Кроме того факта, что первый фрагмент кода имеет оттенки синего рендеринга в невидимых частях холста, они имеют размеры 32 пикселя.
Теперь вернемся к исходному коду Java ...
Если я проверяю тег canvas в Chrome, он сообщает 640 x 480.
Если я проверю его в Fire Fox, он выдаст 640 x 480.
НО! Fire Fox экспортирует исходный код в png с разрешением 300 x 150 (что составляет 15 строк по 10). Является ли каким-то образом изменение размера CSS до 640 x 480 вместо истинного 640 x 480?
Почему, как, что? О_о я запутался ...