0

好的,下一个问题我参考了这段代码(它在第 10 列的图片下方画了一条线:

def drawLine():
  for y in range(getHeight(pic)):
    pixel = getPixelAt(pic, 9, y)
    setColor(pixel, red)
    show (pic)

好的,所以我清楚地将 show(pic) 缩进了一个选项卡。所以我让它工作,所以我不问如何修复代码。我的问题是,当我把上面的代码放进去时,它会在一张图片的副本上画一条大约 10-50 像素长的线(这似乎有点随机)。我想知道为什么会这样。从理论上讲,它不应该在每次迭代时显示图片的副本吗?

4

1 回答 1

1

在不知道您正在使用什么库以及这些对象是什么的情况下,除了猜测之外不可能做更多的事情……但一个猜测似乎非常合理。

您似乎在完全相同(未指定)的位置展示了相同的图片 10-50 次(取决于其高度)。所以最后9-49次没有明显效果;您只是在已经存在的相同像素上对每个像素进行 blitting。(这假设您没有任何 Alpha 透明度。)

同时,您在 (9, 0) 处绘制一个红色像素,然后在 (9, 1) 处绘制另一个像素,依此类推,一直到 (9, 10) 或 (9, 50) 或图像的高度是多少. 所以,这会在图片上或旁边画一条红线。

想象一下,您拍摄了 50 张完全相同的非常薄、完全不透明的照片,并将它们堆放在您的桌子上,然后在堆栈上或旁边画一条红线。它看起来与将一张照片打印在您的桌子上并在其上或旁边画一条红线完全相同。这正是您所看到的。

于 2014-01-22T19:34:04.613 回答