Является ли этот «сдвиг пикселей» ошибкой в ​​tcl / tk canvas? - PullRequest
1 голос
/ 09 сентября 2011

Посмотрите на результат этого скрипта:

 canvas .c -bg white
 grid .c
 set x1 20
 set x2 22
 set y2 105
 for {set f 0} {$f<50} {incr f} {
     set y1 [expr {$y2-0.05*$f}]
     .c create rectangle $x1 $y1 $x2 $y2 -fill black
     incr x1 2
     incr x2 2
 }

В Windows XP я вижу, что в левой части нижнего поля рисунка на один пиксель меньше, чем в правой.Но это не должно происходить, поскольку у2 одинаково (105) для всех прямоугольников.Что ты думаешь?

1 Ответ

1 голос
/ 09 сентября 2011

Я думаю, что это связано с усилиями ТЗ нарисовать прямоугольник размером не менее 1 пикселя.

В коде я вижу, что y2 увеличивается на 1, если оно равно y1 после округления до короткого целого числа.

Регистрируя ваши операторы создания можно увидеть, что пиксель прыгает происходит между f = 10 и f = 11. Это та точка, где y1 и y2 становятся неравными, и никакой регулировки не происходит:

f=10 .c create rectangle 40 104.5 42 105 -fill black
   rounded:   y1=105 y2=105
   adjusted:  y1=105 y2=106
f=11 .c create rectangle 42 104.45 44 105 -fill black
   rounded:   y1=104 y2=105
   no adjustment

Это объясняет скачок пикселей.

IMO, вы должны сообщить об ошибке на этом.

...