qwert Posted September 18, 2008 Share Posted September 18, 2008 This may sound a little far-fetched, but I'm trying to come up with a way to capture an image that's larger that the screen's display size -- for example, when a 1600x1280 image is displayed on a 1280x1024 monitor. Viewing the image requires scrolling, of course, but I'd like to capture the entire image -- including the unseen portion.I've been working with _ScreenCapture_CaptureWnd and have tried things like scrolling the image leftward and upward and then setting the capture start coordinates to -320 and -256. Interestingly, the resulting captured image is the proper 1600x1280 size, but only the bottom right 80% of the area shows any of the image (the part that was being viewed at the moment of the capture).I've started to look into Dll Data Structures and direct Dll calls, but before I try anything I was wondering if someone might know: Is it even possible for a DllCall to access the entire image? If so, what are a couple of relevant terms that could be used in MSDN searches?If the answer is No, then my backup plan is to try capturing the image in four parts and "gluing" it back together -- but I haven't yet looked for appropriate functions.I will appreciate any help or advice. Thanks. Link to comment Share on other sites More sharing options...
Moderators SmOke_N Posted September 18, 2008 Moderators Share Posted September 18, 2008 This may sound a little far-fetched, but I'm trying to come up with a way to capture an image that's larger that the screen's display size -- for example, when a 1600x1280 image is displayed on a 1280x1024 monitor. Viewing the image requires scrolling, of course, but I'd like to capture the entire image -- including the unseen portion.I've been working with _ScreenCapture_CaptureWnd and have tried things like scrolling the image leftward and upward and then setting the capture start coordinates to -320 and -256. Interestingly, the resulting captured image is the proper 1600x1280 size, but only the bottom right 80% of the area shows any of the image (the part that was being viewed at the moment of the capture).I've started to look into Dll Data Structures and direct Dll calls, but before I try anything I was wondering if someone might know: Is it even possible for a DllCall to access the entire image? If so, what are a couple of relevant terms that could be used in MSDN searches?If the answer is No, then my backup plan is to try capturing the image in four parts and "gluing" it back together -- but I haven't yet looked for appropriate functions.I will appreciate any help or advice. Thanks.If the image is on your hard drive before you view it, you can play with some of the GetDIBit functions on the forum (that was your search term) which will lead you to quite a few options.The issue with capturing the data and scrolling is that you still cut off the device content at some point, which will still only give you partial data. Being precise I'd imagine is important. So you'll see how to get things like pixel colors etc from memory just by doing an advanced search of the term I described above. Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer. Link to comment Share on other sites More sharing options...
qwert Posted September 18, 2008 Author Share Posted September 18, 2008 If the image is on your hard drive before you view it ...Thanks for your response. Here's a clarification:The image only exists on the screen. Although I have several uses in mind, the easiest explanation is to consider the example of photo editing software. If you have an editing tool active on screen and have made some changes to the photo -- and then want an exact image of the result WITH the tool and settings overlaid on the image, capturing the entire screen is the only way to get the "full picture", so to speak. Link to comment Share on other sites More sharing options...
cppman Posted September 20, 2008 Share Posted September 20, 2008 It doesn't matter if the image is a file or if it is in memory, just as long as it is the correct format, you can use GetDIBits. Miva OS Project Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now