在Tkinter Canvas小部件中操纵单个像素颜色

1 投票
2 回答
2919 浏览
提问于 2025-04-16 10:53

我想在Tkinter的画布组件中改变单个像素的颜色。

我第一次尝试的时候,创建了很多线条对象,让它们像像素一样工作。

self.Ca是我的画布组件。

代码片段:

i0 = 0
while i0 < height:
    i1 = 0
    while i1 < width:
        pix = self.Ca.create_line(i1, i0, i1+1, i0, fill=self.Hex, width=1)
        self.matrix.append(pix)
        i1 = i1 + 1
    i0 = i0 + 1

虽然这样可以实现,但会消耗很多资源。当画布的大小超过100x100时,性能就会迅速下降。

有没有更好的方法呢?

2 个回答

1

你也可以使用矩形... 在像素坐标 x,y 的位置画一个矩形。

canvas.create_rectangle(x,y,x+1,y+1,fill="red")

不过,这当然不是最有效的方法...

1

与其使用画布,不如先从一张合适大小的空白图片开始。你可以很简单地对图片中的每一个像素进行操作,不过这样你就不能像在画布上那样画出线条、圆圈等图形了。

总的来说,画布并不是为了处理单个像素而设计的。

撰写回答