Recommended Free Tools
For a fixed rectangle in a Windows Forms app, use Graphics.CopyFromScreen to copy desktop pixels into a Bitmap. If the user must choose a display or application window, use the Windows.Graphics.Capture workflow: check support, open the system picker, create a frame pool and capture session, then encode a frame as an image.
The two APIs solve different problems. The first is a direct coordinate-based copy; the second is a user-mediated capture session with a visible system capture indicator. This guide shows both approaches, explains their limits, and provides a browser-free alternative with ScreenshotNeo when the image you need is a web page rather than the local desktop.
Choose the capture API before writing code
| Requirement | Best fit | Why |
|---|---|---|
| Capture a known rectangle or control location | Graphics.CopyFromScreen |
One bitmap operation with explicit source coordinates and dimensions. |
| Let a person select a monitor or application window | Windows.Graphics.Capture |
Provides the system picker, capture item, frame pool and session. |
| Capture a website from a server or CI job | ScreenshotNeo | A HTTP request returns PNG, JPEG, WebP or PDF without configuring a local browser. |
CopyFromScreen is concise and practical for Windows Forms utilities, test tools and fixed-region workflows. Windows.Graphics.Capture is the documented choice when target selection and system-mediated consent are part of the experience. Microsoft documents it for Windows desktop devices and Windows Mixed Reality immersive headsets; the picker and session types were introduced with Windows 10 version 1803. Always check support at runtime because device capability can vary.
Capture a fixed screen rectangle with CopyFromScreen
The method transfers a rectangle from the desktop to a drawing surface. The source point is the upper-left desktop coordinate, the destination point is where pixels land on the destination surface, and the size is the rectangle to copy. In the example below, the destination is a new bitmap whose origin is (0, 0).
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →#1 Best Overall
- [INTEL POWERED CONTENT] - Built with a 8th Generation Hexa-Core Intel i5 and 32GB of DDR4 RAM; Modern, Windows 11 ready, with 4K support, Executive multitasking, media streaming and smooth, multi-tab web browsing; Perfect as an all-purpose multimedia computer; built for content creators; Plenty of RAM and Mass storage for photo and video editing powered by Intel HD 630
- [LATEST WIRELESS TECH] - This Dell Desktop Computer easily connects to the internet through the Built In WiFi / Bluetooth
- [SOLID STATE STORAGE] - This Dell Computer setup comes with an ultra-fast 1TB Solid State Drive (SSD); Setup as the primary boot device; Boot and load programs with lightning speed ; Additional expansion available
- [BUY & OWN WITH CONFIDENCE] - From the world's largest Microsoft Authorized Refurbisher; Quality Guarantee and Free Tech Support; Award-winning Customer Service; | Support Sustainable Business
- [MODERN HI-SPEED PORTS] - USB 3.0 (x4) | USB 2.0 (x4) | DisplayPort (x1) | HDMI Port (x1) | Audio Combo Jack (x1) | Audio Out (x1) | RJ-45 Ethernet (x1) | Internal SATA (x3)
Complete Windows Forms example
using System;
using System.Drawing;
using System.Drawing.Imaging;
static class ScreenCapture
{
public static void SaveScreenRegion(string path, int x, int y, int width, int height)
{
if (width <= 0 || height <= 0)
throw new ArgumentOutOfRangeException("Capture dimensions must be positive.");
using var bitmap = new Bitmap(width, height);
using (var graphics = Graphics.FromImage(bitmap))
{
graphics.CopyFromScreen(
sourceX: x,
sourceY: y,
destinationX: 0,
destinationY: 0,
blockRegionSize: new Size(width, height));
}
bitmap.Save(path, ImageFormat.Png);
}
}
// Example: capture a 1,280 x 720 rectangle beginning at desktop coordinate (100, 80).
ScreenCapture.SaveScreenRegion("capture.png", 100, 80, 1280, 720);
Reference System.Drawing and make System.Drawing.Common available in the Windows desktop project. The code writes a PNG; use ImageFormat.Jpeg or ImageFormat.Webp only if your chosen encoder supports that format.
Using a form or control location
For a Windows Forms form, pass its screen location as the source and the form’s client or outer dimensions as the size you intend to capture. Convert a control’s client coordinates to screen coordinates first (for example, with the control’s screen-position API) so that the source point is expressed in desktop coordinates rather than form-relative coordinates.
Multiple monitors and negative coordinates
The virtual desktop can extend left or above the primary display, so a secondary monitor may have negative x or y coordinates. Use the actual screen bounds when calculating the rectangle. Do not assume that (0, 0) is the top-left corner of every monitor.
Failure handling
CopyFromScreen can throw Win32Exception when the transfer fails. Catch it at the UI or service boundary, log the requested rectangle, and tell the caller which area failed. Validate that the rectangle is inside the available desktop bounds before calling the method; an invalid or partly off-screen region is a common cause of failure.
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minutePC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Rank #2
- Model: Dell OptiPlex 7050 Small Form Factor (SFF)
- Processor: Intel Core i7-7700 3.60 GHz
- Memory: 32GB DDR4 Ram
- Storage: 1TB Solid State Drive (SSD) Fast Boot + Storage
- Operating System: Windows 11 Pro (64-bit)
Let the user pick a display or window with Windows.Graphics.Capture
Use this API when a coordinate is not known in advance or the user should choose the target. The system presents a picker for a display or application window and shows a yellow notification border around an active capture target, as described in Microsoft’s overview.
Documented capture sequence
- Call
GraphicsCaptureSession.IsSupported(). If it returns false, disable capture or offer a different workflow. - Create a
GraphicsCapturePickerand associate it with the owner window when running as a WinUI 3 desktop app. Desktop picker UI requires that owner-window association before it is displayed. - Await the picker and obtain the returned
GraphicsCaptureItem. - Create a frame pool configured for the item’s pixel format and size, then create a capture session.
- Start the session and receive frames from the frame-pool event.
- Copy the selected frame into an image buffer and encode it as PNG, JPEG or another format your application needs.
- Stop and dispose the session and frame pool when the still image has been saved.
The picker and session pipeline is asynchronous because frames arrive after capture starts. A still screenshot therefore needs synchronization: wait for a frame event, process one complete frame, save it, and then close the resources. The exact interop needed to connect the picker to a WinUI 3 window differs from a Windows App SDK or packaged desktop project, so follow the Microsoft API signatures for your project type rather than mixing examples from different UI frameworks.
When this API is preferable
- The user, rather than your code, chooses the window or monitor.
- You need a capture session that can supply successive frames instead of one immediate coordinate copy.
- You want the operating system’s capture consent and visible indication.
Both APIs still leave image encoding and file management to your application. Windows.Graphics.Capture supplies frames; your code decides how to convert and persist the selected frame.
Coordinate, DPI and output considerations
High-DPI displays
Windows Forms coordinates can be logical units while desktop pixels are physical pixels, depending on process DPI awareness and framework settings. Keep your coordinate system consistent: obtain bounds using the same DPI context as the code that calls CopyFromScreen, and verify the result on a scaled monitor.
Rank #3
- 【Processor】 Latest 13th Gen Intel N100 Processor (4 cores, up to 3.4GHz, 6MB cache, 4 threads) with integrated Intel UHD Graphics, delivering efficient performance for everyday computing.
- 【Premium RAM and Storage】 Equipped with up to 32GB DDR5 RAM, ensuring lightning-fast performance, seamless multitasking, and superior responsiveness for heavy workloads. Up to 640GB total storage (128GB UFS + 512GB HP External Flash Drive) offers the perfect combination of high-speed internal storage for quick boot-ups and app launches, plus massive external storage for large files, media, and backups.
- 【Ports】 1x USB Type-C (5Gbps, data transfer only), 2x USB Type-A (Hi-Speed), 1x USB Type-A (5Gbps), 1x headphone/microphone combo (3.5mm), 1x RJ-45 Ethernet, 1x HDMI-out, and built-in WiFi 6 & Bluetooth 5.3 for seamless connectivity.
- 【Display and Built-in Features】 21.5" Full HD (1920 x 1080) display, offering sharp visuals with an anti-glare coating for comfortable viewing. Dual stereo speakers provide clear and immersive audio, while a built-in HD webcam with a privacy shutter ensures secure video conferencing and online meetings.
- 【Operating System】 Pre-installed with Windows 11 Pro (64-bit), providing enhanced security, business-grade features, and remote desktop support, making it an excellent choice for professionals and power users.
Choosing an image format
- PNG: lossless and appropriate for text, UI screenshots and transparency.
- JPEG: smaller for photographic content, but introduces compression artifacts around text.
- WebP: useful when your downstream system accepts it and you want a smaller file than PNG.
Use a unique filename or an atomic temporary-file rename if screenshots are produced repeatedly. Dispose every Bitmap, Graphics, frame and session object so a long-running utility does not accumulate native resources.
Performance, reliability and security
- Capture only the required rectangle; copying a full multi-monitor desktop allocates more memory than a small region.
- Perform file encoding and disk writes away from the UI thread to keep the picker or form responsive.
- Throttle repeated captures and dispose each image before starting the next one.
- Do not write screenshots to a directory that untrusted users can read if the desktop may contain confidential information.
- For automated jobs, record the source rectangle, display configuration, DPI mode, output format and exception details so failures can be reproduced.
Troubleshooting common C# capture failures
“The screenshot is shifted or cropped”
Check whether the source coordinates are screen coordinates or client coordinates, and account for monitor origins and DPI scaling. Log the rectangle before copying it.
Win32Exception from CopyFromScreen
Validate width and height, confirm that the requested rectangle lies within the current virtual-screen bounds, and retry only after handling a display-layout change. Avoid assuming the primary monitor starts at zero.
The picker does not open in a WinUI 3 desktop app
Associate GraphicsCapturePicker with the desktop app’s owner window before displaying it. Also check GraphicsCaptureSession.IsSupported() and handle unsupported devices.
Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Repair Windows errors before they cause bigger problemsFix Now →Rank #4
- 【AN INDUSTRY LEADER】- As a Microsoft Authorized Refurbisher, we pride ourselves on producing quality remanufactured PCs. Every machine is handled with care, and our experts are dedicated to giving them a new life. We are committed to reducing e-waste, and it is our goal to ensure each machine we process can satisfy our customers needs.
- 【PROCESSOR】- Intel Core i5 7500 (6MB Cache, 3.4GHz up to 3.8GHz Turbo Boost). TPM 2.0 is recommended for Windows 11, yet this PC only has TPM 1.2. This PC may not support all security features and newest updates.
- 【RAM & STORAGE】- 16GB DDR4 RAM, 512GB SSD, Preloaded with Windows 11 Pro 64-bit.
- 【CONNECTIVITY】- 2x Display Port 1.2; 1x HDMI 1.4; 1x USB 3.0 Type C; 5x USB-A 3.0; 4x USB-A 2.0
- 【BUILT IN WIFI & BLUETOOTH】- Built-in Intel 7260 featuring the latest 802.11ac Wi-Fi for enhanced wireless performance and integrated Bluetooth for seamless device connectivity.
No frame arrives from Windows.Graphics.Capture
Ensure the frame pool and session were created from the returned capture item, subscribe to the frame-arrived path before starting the session, and keep the pool and session alive until a complete frame has been processed.
The output file is locked or memory usage grows
Dispose the bitmap, graphics object, frame and capture session deterministically. For repeated captures, save or stream each image before releasing the next frame instead of retaining every bitmap.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Or skip the browser setup
If your target is a public web page rather than the local Windows desktop, ScreenshotNeo provides a single HTTP request for a clean screenshot or PDF. It accepts cookie and consent banners before capture and removes more than 60 known consent platforms, newsletter popups and chat widgets. Bot checks, blank pages, timeouts, failed loads and cache hits are not billed, and response headers identify the page verdict and billing result. Its MCP server exposes take_screenshot, get_page_info and capture_pdf to Claude, Cursor and other MCP clients.
See the full parameter list in the ScreenshotNeo documentation. The examples below use the same target URL in each language.
cURL
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
Python
import requests
r = requests.get(
"https://api.screenshotneo.com/v1/shot",
params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"},
timeout=90,
)
r.raise_for_status()
open("shot.webp", "wb").write(r.content)
Node.js
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const fs = await import('node:fs/promises');
await fs.writeFile('shot.webp', Buffer.from(await res.arrayBuffer()));
ScreenshotNeo also supports full-page captures with lazy images loaded, CSS-selector element capture, dark mode, 12 device presets or a custom viewport, retina scale, PDF paper sizes and margins, custom CSS and JavaScript, clicks before capture, selector waits or network-idle waits, request and resource blocking, custom headers/cookies/user agents and Authorization, timezone and geolocation, transparent backgrounds, resizing, chosen cache TTLs, signed image links, asynchronous jobs with signed webhooks, bulk capture of up to 100 URLs per call, a usage API and an OpenAPI specification. Existing parameter names used by other screenshot APIs are accepted to ease migration.
Best Value
- Connectivity: Includes WiFi, Bluetooth, and LAN for wireless and wired connections
- Memory: Features 16GB DDR4 RAM for smooth multitasking and performance
- Storage: Combines 500GB SSD and 1TB HDD for ample storage space
- Graphics: Integrated Intel UHD Graphics 630 for crisp visuals and video playback
- Design: Sleek desktop tower with black color and slim profile for modern look
Plans
| Plan | Allowance | Price |
|---|---|---|
| Free | 1,000 screenshots/month | No card required |
| Starter | 3,000 | $5 |
| Growth | 15,000 | $15 |
| Pro | 60,000 | $39 |
| Scale | 250,000 | $99 |
| Business | 1,000,000 | $249 |
Every feature is included on every plan, and yearly billing provides two months free. Create a free ScreenshotNeo account to get 1,000 screenshots each month without adding a card.
Frequently Asked Questions
Can I capture an off-screen or minimized window with CopyFromScreen?
CopyFromScreen copies pixels currently present in the desktop surface at the requested coordinates; it is not a window-rendering API. Use Windows.Graphics.Capture when the user needs to select an application window through the system capture flow.
Does Windows.Graphics.Capture work on every Windows device?
No. Microsoft documents support for Windows desktop devices and Windows Mixed Reality immersive headsets, with picker and session types introduced in Windows 10 version 1803. Check GraphicsCaptureSession.IsSupported() at runtime.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Which API should a web-service use for website images?
A local C# desktop API captures the machine’s display. For server-side website screenshots, use an HTTP screenshot service such as ScreenshotNeo, which returns the image or PDF directly.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




