void CaptureScreenShot()
{
if (!Directory.Exists(OutPath))
Directory.CreateDirectory(OutPath);
string fileName = null;
var imgFmt = ScreenShotViewModel.SelectedImageFormat;
var extension = imgFmt.Equals(ImageFormat.Icon) ? "ico"
: imgFmt.Equals(ImageFormat.Jpeg) ? "jpg"
: imgFmt.ToString().ToLower();
var saveToClipboard = ScreenShotViewModel.SelectedSaveTo == "Clipboard";
if (!saveToClipboard)
fileName = Path.Combine(OutPath,
DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss") + "." + extension);
Bitmap bmp = null;
var selectedVideoSource = VideoViewModel.SelectedVideoSource;
var includeCursor = OthersViewModel.Cursor;
switch (VideoViewModel.SelectedVideoSourceKind)
{
case VideoSourceKind.Window:
var hWnd = (selectedVideoSource as WindowVSLI)?.Window ?? Window.DesktopWindow;
if (hWnd == Window.DesktopWindow)
bmp = ScreenShot.Capture(includeCursor);
else if (hWnd == RegionSelector.Instance.Window)
bmp = ScreenShot.Capture(RegionSelector.Instance.Rectangle, includeCursor);
else bmp = ScreenShot.CaptureTransparent(hWnd, includeCursor,
ScreenShotViewModel.DoResize, ScreenShotViewModel.ResizeWidth, ScreenShotViewModel.ResizeHeight);
break;
case VideoSourceKind.Screen:
bmp = (selectedVideoSource as ScreenVSLI)?.Capture(includeCursor);
break;
}
// Save to Disk or Clipboard
if (bmp != null)
{
if (saveToClipboard)
{
bmp.WriteToClipboard(imgFmt.Equals(ImageFormat.Png));
Status = "Image Saved to Clipboard";
}
else
{
try
{
bmp.Save(fileName, imgFmt);
Status = "Image Saved to Disk";
RecentViewModel.Add(fileName, RecentItemType.Image);
}
catch (Exception E)
{
Status = "Not Saved. " + E.Message;
}
}
}
else Status = "Not Saved - Image taken was Empty";
}