作者zaimoku (遇见未来)
看板MacDev
标题Re: [问题] 如何将视窗内容抓下来?...
时间Wed Jul 4 22:31:03 2007
谢谢你的回覆...我在这里贴文前...像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