我已經創建畫布獲得圖像中$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