获取画布上某个点的颜色

时间:2018-06-03 12:32:49

标签: tcl tk

是否可以从画布中获取点(x / y坐标)的颜色(rgb值和透明度)?示例:我在画布上绘制一些图形和文本,之后我想获得特定坐标处的点的颜色。

无论画布是否在屏幕上可见,解决方案都应该是独立的。它应该独立于操作系统。

我没有在网上找到任何解决方案。这就是为什么我认为这是不可能的。我是对的吗?

2 个答案:

答案 0 :(得分:2)

画布不是基于像素的,并且不提供用于执行此操作的API。

但是,如果您已安装tkimg软件包,则可以使用该软件包来执行screengrab of the canvas,然后再使用fetch the pixel value

package require Img

# Get the data into an image
set screengrab [image create photo -format window -data $theCanvas]
# Read the pixel data out of the grabbed image
set pixeldata [$screengrab get $x $y]
# Get rid of the grabbed data once you're done
image delete $screengrab

请注意,相关坐标将是视口坐标,而不是画布内部坐标:如果您已滚动画布,则必须根据需要进行偏移。

答案 1 :(得分:1)

你是对的,tk没有提供任何方法来获取画布上特定像素的颜色。