Задать вопрос
PavelK
@PavelK

Как решить проблему при рисовании на канвасе с координатами пикселей, когда получаются дробные значения?

Приветствую!
Упрощённое описание:
делаю что-то типо календарной сетки
рисую пямоугольник шириной 400 пикселей - месяц Февраль
в нём 29 дней и нужно что бы они по ширине были равны, т.е.
400/29 = 13.79
рисую 29 вертикальных линий
и вот тут то как раз облом - т.к. значения могут быть только целочисленные,
после последнего столбца куча пустого места, хотя его быть не должно =(
vyJhphfl.jpg

На рисунке все линии шириной 1 пиксель.

Подскажите, пожалуйста, как можно по элегантнее решить эту проблему?
  • Вопрос задан
  • 280 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 2
Ivanq
@Ivanq
Знаю php, js, html, css
...
var w = 400 / 29; // или 28
var x1, x2;
for(var i=0;i<29;i++) {
  x1 = Math.floor(i * w);
  x2 = Math.floor(x1 + w);
  // И тут рисуете прямоугольник от (x1, y1) до (x2, y2), где y1 - где заканчивается "февраль", а y2 - конец экрана.
}
Ответ написан
Комментировать
bingo347
@bingo347 Куратор тега HTML
Crazy on performance...
Как вариант, округлять значения в разную сторону по признаку четности номера линии, например четные округлять вниз, нечетные вверх
Разница в 1 пиксель на глаз не будет заметна

Если нужна еще больше точность, то нужно из дробной части вычислять оьношение, в Вашем примере будет 79% полос по 14 пикселей и 21% по 13 пикселей
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@LiguidCool
Такое впечатление, что у вас там не один столбец, а 2.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы