• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.
Sign in to follow this  
Followers 0
fread

coding a screenshot tool - allowing user to select a part of screen

6 posts in this topic

Hi guys. How to code (in WINAPI) util that would allow user to select part of the screen? I'm going to make a screenshot maker tool like the one available in AQQ communicator. I'd like to allow user selection of certain parts of screen (select first and second corner). Then I need to capture the pixels data in RGB or RGBA format. Any ideas how to do this?

0

Share this post


Link to post
Share on other sites

Thank you, but that's related to "making screenshot" part of the question.
What about the selecting a rectangle on the screenshot with mouse? User should be able to do this somehow. Click and drag to make rectangle and then confirm making a screenshot. Something like that. Any ideas?

0

Share this post


Link to post
Share on other sites

Are you referring to the whole screen, or the applications window?  There are api's for getting the global mouse coordinates.  Though I'm a bit iffy on the best way to draw the rectangle, in old school GDI land, i believe there was a way to get the desktop's HDC and then draw using that.  I'd imagine it's something similar on more modern windows.

 

On the other hand, if you just want the application window, well that's relatively easy, just a matter of drawing a rectangle within your own framework.

1

Share this post


Link to post
Share on other sites

Well, if you look at my code, im taking the whole screen with GetWindowRect(), but if you supply your own value to the x,y,w,h variables it will only take that area. Now, i have no idea about how your app work so im just giving you the code for the screenshot, how you take it is up to you.

 

 


Though I'm a bit iffy on the best way to draw the rectangle, in old school GDI land, i believe there was a way to get the desktop's HDC and then draw using that.

 

Yep, that's what those lines are for

HWND hDesktopWnd = GetDesktopWindow();
HDC hdc = GetDC(hDesktopWnd);


Perhaps you could make a gui with some edit box for the coordinates, and a preview windows and see the rectangle into that.

Edited by Vortez
1

Share this post


Link to post
Share on other sites

Hah, for some reason I find it amusing that it's remained the same after so many years.

 

Maybe they are having trouble with the rectangle portion?  That's just looking at when the mouse first gets it down message, thats your first point, then just look at mouse move messages while the mouse is still down to get a second point.  And you have your rectangle right there, you might have to take the mins/maxes of it to make sure it's not negative, but its pretty straightforward.  (And probably also in Vortez's code, I'd imagine)

1

Share this post


Link to post
Share on other sites

If you are looking for a tool to do this on the entire desktop, such tools already exist for free that can save you work. I use Greenshot, which, by the way, is open source so you can take a look and see how it works.

 

If you are looking to do this from inside your game, and only selecting a portion of your game window, then just use your API of choice to get the previous screen buffer, and copy a subrect of the RGB data and save that. Draw your own rect using your game's existing drawing code - just pause the logic of your game while doing so. I wouldn't touch Win32 at all for that, unless I was already writing the game in Win32. Think of the screenshot functionality as a in-game feature, and implement it within the confines of the structure of your game that already exists.

 

For me, using SFML, the actual screen-capturing code is as easy as:

sf::Image entireScreen = myRenderWindow.capture();
sf::Image portionOfScreen;
portionOfScreen.create(userSelectedRectangle.width, userSelectedRectangle.height);
portionOfScreen.copy(entireScreen, 0, 0, userSelectedRectangle);

portionOfScreen.saveToFile("screenshot.png");

How to get 'userSelectedRectangle' would be dependent on your game's architecture, but really shouldn't be hard.

 

[b][Edit:][/b] Ah, but you aren't making a game, and you are wanting to capture a portion of the entire monitor, so everything I said above is irrelevant. ph34r.png

Edited by Servant of the Lord
2

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0