Can I take a screenshot as vector graphics or at a higher resolution than native?

Solution 1:

Of course! Yes, you can do that. You will need a UI rendering engine that has vector backend. Gtk+ 3+ has that backend. Please see this project:

  • Github: Gtk vector screenshot taking module

But you should know the application should be able to run on Linux using Gtk+. Maybe you can create mockups either with this method, or using Microsoft Visio for having vector output.

See these samples:

  • Youtube: Taking and Deconstructing Vector Screenshots
  • PDF samples: First - Second - Read more on this

If you are a Debian/Ubuntu user, for installation you can simply do

$ sudo apt-get install gtk-vector-screenshot
$ take-vector-screenshot

And then you only need to choose what application you want to take screenshot with your mouse. Curently, the application should be a Gtk+ 3 for a successful vector screenshot. The result will be a PDF file in the current working directory.

take-vector-screenshot application

PS: Good news: Firefox 42 will be using Gtk+3.

Solution 2:

Capture as vector? No of course not. There is no way for the capture program to know anything about the geometry of the shapes on screen without having some sort of hook into the program(s) doing the drawing.

What you can do however is to capture a raster image and then convert that to vector. There are tools like Inkscape that can perform this conversion (though you will usually have to manually do some tweaking, and even then, you will rarely be able to get pixel-perfect results).

As for the resolution, when you perform a capture, it cannot capture more information than is available. You can re-size the resulting image up, and if you use a good scaling algorithm, the interpolated pixels will blend fairly well, but there is no way to invent more pixel information than is present.

Theoretically, it could be possible to implement some sort of system in which everything is rendered internally at a higher resolution and then sent it to the screen at a lesser one, but that would require special support in both the OS and the drive, and is unlikely to be implemented since it has very limited use and would only be a waste of memory in most scenarios.

You may be able to use desktop-panning to achieve a higher resolution desktop than the screen supports, but again, that requires that your drivers support it.

Solution 3:

Not currently. This should be possible but it not.

  • Windows since Vista uses Windows Presentation Foundation
  • OS X uses Quartz 2D (PDF).

Both are native vector UIs, but allow bitmaps to be used as well - this is an excellent fit for SVG. However while tools to export WPF to SVG exist (the same goes for NSView), most of these are aimed at software developers. For example, you would need the XAML source of your application to export that into SVG.