我已经创建画布获得图像中$gw.sw.sf.frame.c
其中$gw
是一个顶层窗口sw
和sf
是ScrolledWindow并从BWidget封装的ScrollableFrame和c是画布(tk::canvas
)。在画布内部,只有填充了某种颜色的文本和矩形。然而TclTk从帆布
$can postscript -colormode color -file test.eps
,如果我试图用::canvas::snap $can
为了得到一个图像,然后可以使用保存PNG/BMP/TIFF/JPEG图像文件: 我可以使用产生从画布正确的EPS文件该图包我得到以下错误:
Window ".graphresults1494146100.sw.sf.frame.c" cannot be transformed into a pixmap (possibly obscured?)
Window ".graphresults1494146100.sw.sf.frame.c" cannot be transformed into a pixmap (possibly obscured?)
while executing
"image create photo -data $can"
(procedure "::mTKs::savegraphres" line 3)
invoked from within
"::mTKs::savegraphres .graphresults1494146100.sw.sf.frame.c"
(menu invoke)
所以问题是:
有没有办法解决这个问题,所以我可以用::帆布::卡的d然后Img生成图像文件?
如果没有,有没有什么办法EPS文件转换为只使用TclTk码的图像文件?我知道我可以使用的Ghostscript或ImageMagic用于此目的,但我想我的程序只使用TclTk。
任何其他方式来获得从画布图像?
以防万一:我使用的OS 10.12.4 TclTk 8.6图1.4.6 Tklib 0.6和BWidget 1.9.10
新的事实
我发现,问题出在操作系统X版本。在我的工作,我使用10.10.4这里的代码是能够创建数字,但在创建人物后,在画布上的内容变为全白。我想,帆布::捕捉改变,导致一个明显的空白画布窗口内的堆叠顺序,这是正确的?
此外,我接受了Donal Fellows的建议,并直接在.toplevelwindow.canvas中创建画布,并使用10.10.4 canvas :: snap和Img生成正确的图像,并且窗口内容未被更改。使用10.12.4我得到了和以前一样的错误。任何解决这个问题?
当我试图生成图像时,画布显示在顶部,原则上:: canvas :: snap负责将画布上升到顶部。所以最可能的问题就是您提到我正在使用的复杂堆叠的小部件。我会尝试一个简单的画布。从你的答案我应该明白,没有本地的TclTk包来从eps转换为任何其他图像格式? – kbr85