"pixel shift"这是 tcl/tk 画布中的错误吗?



看看这个脚本的结果:

 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。

相关内容

  • 没有找到相关文章

最新更新