【发布时间】:2020-09-10 13:39:50
【问题描述】:
Linux Debian 杰西
我在 TclTk 中创建了一张照片图像。创建后,我想查询实际宽度,以便我可以使用它。我在 MWE 中使用常量 500 时,在实际程序中不太明显。
% puts $tcl_version
8.6
% package require Tk
8.6.2
% set i [image create photo p0 -width 500]
p0
% #not correct
% image width p0
0
% #correct
% p0 cget -width
500
来自图像手册页:
图像宽度 名称
返回一个十进制字符串,给出图像 name 的宽度(以像素为单位)。
所以我会期待
image width p0
还返回宽度的十进制值。 cget 命令确实返回了我所期望的结果。
我做错了什么?
【问题讨论】:
-
它需要有一个图像有一个宽度(像素)。目前您的图片为空。
-
为什么 p0 cget -width 返回正确的宽度?是同一张图片
-
@Jerry 高度为 1 根据正确宽度下方的答案返回。但是一个函数调用返回一个值而另一个不返回是没有意义的。
-
$im cget -width返回您已配置的内容,但image width $im返回可能不同的真实宽度。在您的情况下,您的 area 为零,因此照片图像类型会优化并表示没有可显示的内容。 -
这再次阐明了为什么一个命令返回的东西与另一个不同。没有返回实际宽度正是发生的事情。这在配置图像时造成了不良影响。使用 tclmuPDF saveImage 方法。我可以通过计算和设置图像宽度和高度来轻松解决它。或者省略任一设置并指示 tclmuPDF 以所需大小存储图像。你只需要知道它。