Hi folks, I'm trying to put together a screencast program using PyObjC. The first step is to be able to take a screenshot, and I've figured out one way to do that, based on The Irate Scotsman's Screen Sharing code [1]. Since OS X is using OpenGL to compose the window, and since even Series 60 cellphones expose and API for taking screenshots from Python, I'm thinking there must be a better way than this. But y'know, I've been wrong before. Here is the function I'm using:
def screenShot(self): rect = NSScreen.mainScreen().frame() image = NSImage.alloc().initWithSize_((rect.size.width, rect.size.height)) window = NSWindow.alloc ().initWithContentRect_styleMask_backing_defer_( rect, NSBorderlessWindowMask, NSBackingStoreNonretained, False) view = NSView.alloc().initWithFrame_(rect) window.setLevel_(NSScreenSaverWindowLevel + 100) window.setHasShadow_(False) window.setAlphaValue_(0.0) window.setContentView_(view) window.orderFront_(self) view.lockFocus() screenRep= NSBitmapImageRep.alloc().initWithFocusedViewRect_ (rect) image.addRepresentation_(screenRep) view.unlockFocus() window.orderOut_(self) window.close() return image Suggestions for improvement are welcome! Next step: Figure out how to create a Quicktime movie and insert the images. I had assumed that the QTKit would allow me to do this, ha ha ha. Fool me once, shame on you Apple, but fool me again and again and again.... --Dethe [1] http://iratescotsman.com/products/source/ There are two ways of constructing a software design. One way is to make it so simple there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies. --C.A.R. Hoare _______________________________________________ Pythonmac-SIG maillist - Pythonmac-SIG@python.org http://mail.python.org/mailman/listinfo/pythonmac-sig