Re: [問題] 如何將視窗內容抓下來?...

看板MacDev作者 (遇見未來)時間18年前 (2007/07/04 22:31), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/4 (看更多)
謝謝你的回覆...我在這裡貼文前...像ADC Reference 我大概都有去找過...我是在找 capture scrren時... 發現....CGDispalyAddressBase()可以抓到整個screen 的frame buffer,只是如果我在window上下draw image, 馬上用..CGDispalyAddressBase()取得address..把資料 讀出來..發現..剛draw的image有部份還沒upadate到 frame buffer中所以抓下來的內容有一部份是舊的.. 因為在draw image後delay幾秒後..再capture就可以正確 但是要delay幾秒沒辨法得到.....所以有點麻煩... 我draw image是用 Qtarz 2D的 CGContextDrawImage... 我draw image有馬上接CGContextFlush.... 我在找時..也有看到CopyBit function...只是...他沒法在 新版的OS上..work..我沒看到有可以替代的...另外..因為是用 Carbon開發..所以有些我看到是.cocoa的code我就放棄用了.. 所以現在...還是..沒辦法正確的抓到視窗的內容下來.... 不知有沒有人能提供意見..謝謝囉... ※ 引述《jclin (Rayman Raving Rabbids)》之銘言: : 抓螢幕的圖 : http://developer.apple.com/documentation/Cocoa/Conceptual/ : CocoaDrawingGuide/AdvancedDrawing/chapter_9_section_4.html# : //apple_ref/doc/uid/TP40003290-CH207-CJBGBCBH : 至於抓視窗上的,之前在 SafariPowerToy 有要寫 capture : 整個 Safari 網頁內容的工具,但是那次硬碟掰了所以就沒有 : 相關的 source 當作參考, : 憑印象來說,要抓視窗上的內容,必須要知道 NSView : 然後建一個 NSBitmapImageRep 給 NSView 當作 graphic content, : 然後呼叫對方的 redraw 去重繪,完畢之後再用 NSImage 存起來。 : 我 google 到的類似 code 就像 http://www.borkware.com/quickies/single?id=40 : 不過這個看起來是抓螢幕上目前的內容, : 以 SafariPowerToy 本來要作的擷取網頁內容來說, : 因為螢幕上的顯示只是網頁的一部份, : 所以程式本來就不是只單單擷取螢幕上面的圖, : 而是把本來要畫到螢幕上的全部內容畫到另外一個畫布上。 : 希望你 google 或是看 ADC Reference 可以找得到更詳細資料。 : ※ 引述《zaimoku (遇見未來)》之銘言: : : 看來好像沒有什麼人有試著將視窗內容抓下來..... : : 那我自己分享一下最近找到一些相關的東西... : : CGDisplayBassAddress()...這function可以拿到 : : 整個screen的內容....不過不太確定拿到的內容.... : : 是否和display的設定或硬體有關.... : : 不過..目前看來好像就這個可行..實在是不知.... : : 有沒有什麼其它方法了... : ※ 編輯: jclin 來自: 220.131.22.165 (07/01 11:32) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.67.164.70
文章代碼(AID): #16YwyeWz (MacDev)
文章代碼(AID): #16YwyeWz (MacDev)