Platforms to show: All Mac Windows Linux Cross-Platform

/MacFrameworks/CGWindow capture


Required plugins for this example: MBS MacCF Plugin, MBS MacCG Plugin, MBS Main Plugin, MBS Picture Plugin, MBS MacFrameworks Plugin

Last modified Sun, 17th Mar 2012.

You find this example project in your MBS Xojo Plugin download as a Xojo project file within the examples folder: /MacFrameworks/CGWindow capture

Download this example: CGWindow capture.zip

Project "CGWindow capture.xojo_binary_project"
Class App Inherits Application
Const kEditClear = "&Delete"
Const kFileQuit = "&Quit"
Const kFileQuitShortcut = ""
End Class
Class Window1 Inherits Window
Control PushButton1 Inherits PushButton
ControlInstance PushButton1 Inherits PushButton
EventHandler Sub Action() dim windowID as integer = CGWindowMBS.GetWindowID(self) dim p as picture = CGWindowMBS.CreateWindowListImage(self.left+canvas1.left, self.top+canvas1.top, canvas1.Width, canvas1.Height, CGWindowMBS.kCGWindowListOptionOnScreenBelowWindow,windowID, CGWindowMBS.kCGWindowImageDefault) Title=str(p.Width)+" x "+str(p.Height) // scale down to match canvas size dim f as Double = min(canvas1.height/p.height,canvas1.width/p.width) dim w as integer = f * p.Width dim h as integer = f * p.Height Canvas1.Backdrop=p.ScaleMBS(w,h) End EventHandler
End Control
Control Canvas1 Inherits Canvas
ControlInstance Canvas1 Inherits Canvas
End Control
Control PushButton2 Inherits PushButton
ControlInstance PushButton2 Inherits PushButton
EventHandler Sub Action() // take screenshot dim windowID as integer = CGWindowMBS.GetWindowID(self) dim p as Picture = CGWindowMBS.CreateWindowListImage(0, 0, 0, 0, CGWindowMBS.kCGWindowListOptionOnScreenBelowWindow, windowID, CGWindowMBS.kCGWindowImageDefault) Title=str(p.Width)+" x "+str(p.Height) // scale down to match canvas size dim f as Double = min(canvas1.height/p.height,canvas1.width/p.width) dim w as integer = f * p.Width dim h as integer = f * p.Height Canvas1.Backdrop=p.ScaleMBS(w,h) End EventHandler
End Control
Control PushButton3 Inherits PushButton
ControlInstance PushButton3 Inherits PushButton
EventHandler Sub Action() dim windowID as integer = CGWindowMBS.GetWindowID(self) // you can grab CGImageMBS if you need dim img as CGImageMBS = CGWindowMBS.CreateWindowListCGImage(0,0,0,0,CGWindowMBS.kCGWindowListOptionOnScreenBelowWindow,windowID, CGWindowMBS.kCGWindowImageDefault) // and convert it later yourself to picture (if needed) dim p as Picture = img.Picture Title=str(p.Width)+" x "+str(p.Height) // scale down to match canvas size dim f as Double = min(canvas1.height/p.height,canvas1.width/p.width) dim w as integer = f*p.Width dim h as integer = f*p.Height Canvas1.Backdrop=p.ScaleMBS(w,h) End EventHandler
End Control
EventHandler Sub Open() if not TargetMachO then MsgBox "This project requires Mac OS X 10.5!" end if End EventHandler
End Class
MenuBar MenuBar1
MenuItem FileMenu = "&File"
MenuItem FileQuit = "#App.kFileQuit"
MenuItem EditMenu = "&Edit"
MenuItem EditUndo = "&Undo"
MenuItem UntitledMenu1 = "-"
MenuItem EditCut = "Cu&t"
MenuItem EditCopy = "&Copy"
MenuItem EditPaste = "&Paste"
MenuItem EditClear = "#App.kEditClear"
MenuItem UntitledMenu0 = "-"
MenuItem EditSelectAll = "Select &All"
End MenuBar
End Project

Download this example: CGWindow capture.zip

The items on this page are in the following plugins: MBS MacFrameworks Plugin.


The biggest plugin in space...