Cropper

Point and shoot screen captures

Cropper is a screen capture utility written in C#. It makes it fast and easy to grab parts of your screen. Use it to easily crop out sections of vector graphic files such as Fireworks without having to flatten the files or open in a new editor. Use it to easily capture parts of a web site, including text and images. It's also great for writing documentation that needs images of your application or web site.

CropperUI.png
The basic Cropper UI

Plugins

A community plug-in project is available at http://www.codeplex.com/cropperplugins
Make your own, there is an sample class in the extras folder that you can use as a starting point.

Controls

  • Arrow keys: Nudge the main form one pixel.
  • Alt+Arrow keys: Resize the main form one pixel.
  • Alt+[ or ]: Resize the thumbnail indicator one pixel.
  • +Ctrl: Changes the amount of resizes and nudges listed above to ten pixels.
  • [ or ] or Mouse Wheel: Resize the main form twenty pixels while keeping the crosshairs centered.
  • Right-Click: Context menu on the main form.
  • Double-Click or Enter or S: Take a screen shot of the area under the Cropper window or start/stop a recording plug-in.
  • Tab: Cycle form colors.
  • Shift+Tab: Cycle form sizes.
  • Esc: Hide the main form.
  • F8: Show the main form.
If Cropper is being used to save Print Screen images (Cropper will capture even while the crop form is minimized)
  • PrintScreen: Take a screen shot of the entire desktop or start/stop a recording plug-in.
  • Alt+PrintScreen: Take a screen shot of the current active window or start/stop a recording plug-in.
  • Ctrl+Alt+PrintScreen: Take a screen shot of the region below the mouse or start/stop a recording plug-in.

Output Options

Cropper is able to output images to a variety of formats. There is an extensibility model allowing developers to create custom output plug-ins. Descriptions of some of the default plug-ins are given below.
  • BMP: Large files but no compression artifacts.
  • PNG: Smaller files with lossless compression, good for most image formats except full color photographic. Think of it as a replacement for the simpler GIF format. All modern browsers can display a png file.
  • JPEG: Good for full color photographic images. Cropper can save jpg's in varying quality settings from 10 to 100. 10 being the lowest quality and smallest file size. 100 being the highest quality and largest file size. A quality setting of 60-70 is usually good for the web. It's a good trade off between file size and image quality.
  • Clipboard: The image is placed on the clipboard and can be pasted into any application that accepts images.
  • Printer: Presents a print dialog that allows you to send the image straight to the printer.

Known Issues

  • The maximum size of the crop form is smaller than the screen size. This is a limitation of the way the UI is currently drawn. There is an area of transparent form around the visible area which causes Cropper to appear to be smaller than the maximum form size. With the original usage of cropping out small areas of the screen this was not pressing problem.

Source Notes

Things that may be of interest to C# developers in the sourcecode.
  • Cropper.Core.Plugins: Loading assemblies at runtime using reflection and temporary AppDomains.
  • Cropper.Extensibility.ImagePairNames: Operator overloading.
  • Cropper.Core.ImageCapture.FetchCapture: Using delegates and call backs to retrieve an Image and (Cropper.Core.ImageCapture.FetchOutputStream) a Stream.
  • Cropper.Core.CropFormConfiguration: XML serialization and deserialization.
Each plug-in makes use of multiple delegates and events. The plug-ins are passed a reference to the host, and each one can subscribe to the events exposed by the host.

Thanks

Thank you to everyone for your feedback. Brian didn't expected this app to be so popular. If you like it, find it useful, or want it to do more... let us know.


Release History



Brian's blog and Cropper post

wdpt2.jpgWindows Developer Power Tools

Last edited Jan 15, 2010 at 4:04 PM by TerryHughes, version 42