看看这个脚本的结果:
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系统中,我看到图左侧的底部边缘比右侧低一个像素。但它不应该发生,因为y2对于所有矩形都是相同的(105)你觉得呢?
我认为这与TK的努力有关绘制大小至少为1像素的矩形。
在代码中我可以看到,y2增加了如果四舍五入后等于y1,则为1
记录您的创建语句可以看到,像素跳转发生在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
这就解释了像素跳转。
在我看来,你应该写一个bug。