當前位置:編程學習大全網 - 源碼下載 - .NET的SendKeys配合截圖的問題

.NET的SendKeys配合截圖的問題

建議妳不要用sendkey的方式截圖。這裏有個截圖的工具類,希望對妳有點幫助。

public static class ScreenCapturer

{

/// <summary>

/// 全屏截圖,以為jpeg格式創建文件

/// </summary>

/// <param name="path">保存路徑</param>

public static void PrintScreen(string path)

{

using (FileStream fs = new FileStream(path, FileMode.Create))

{

SaveImageInStream(RecScreen, ImageFormat.Jpeg, fs);

fs.Close();

}

}

/// <summary>

/// 全屏截圖,以為jpeg格式創建文件

/// </summary>

/// <returns>壓縮成字節數組</returns>

public static byte[] PrintScreenInBytes()

{

MemoryStream ms = new MemoryStream();

SaveImageInStream(RecScreen, ImageFormat.Jpeg, ms);

ms.Close();

return ms.ToArray();

}

/// <summary>

/// 全屏截圖,返回jpeg文件

/// </summary>

/// <returns></returns>

public static Image PrintScreenImage()

{

return SaveImageInStream(RecScreen, ImageFormat.Jpeg, null);

}

private static Rectangle RecScreen

{

get

{

return new Rectangle(new Point(0, 0), new Size(Screen.PrimaryScreen.Bounds.Width, Screen.AllScreens[0].Bounds.Height));

}

}

/// <summary>

/// 窗體截圖,以為jpeg格式創建文件

/// </summary>

/// <param name="form">截圖窗體</param>

/// <param name="path">保存路徑</param>

public static void PrintForm(Form form, string path)

{

Rectangle r = new Rectangle(form.Location, new Size(form.Width, form.Height));

using (FileStream fs = new FileStream(path, FileMode.Create))

{

SaveImageInStream(r, ImageFormat.Jpeg, fs);

fs.Close();

}

}

/// <summary>

/// 窗體截圖,返回字節數組,文件格式jepg

/// </summary>

/// <param name="form">截圖窗體</param>

/// <exception cref="NullReferenceException">窗體為空</exception>

public static byte[] PrintFormInBytes(Form form)

{

if (form == null)

{

throw new NullReferenceException("截圖窗體對象為空");

}

Rectangle r = new Rectangle(form.Location, new Size(form.Width, form.Height));

MemoryStream ms = new MemoryStream();

SaveImageInStream(r, ImageFormat.Jpeg, ms);

ms.Close();

return ms.ToArray();

}

/// <summary>

/// 窗體截圖,文件格式jepg

/// </summary>

/// <param name="form">截圖窗體</param>

/// <returns></returns>

public static Image PrintForm(Form form)

{

if (form == null)

{

throw new NullReferenceException("截圖窗體對象為空");

}

Rectangle r = new Rectangle(form.Location, new Size(form.Width, form.Height));

return SaveImageInStream(r, ImageFormat.Jpeg,null);

}

/// <summary>

/// 把截圖保存在流並返回圖片

/// </summary>

/// <param name="r">圖形的坐標信息</param>

/// <param name="ifa">圖片格式</param>

/// <param name="s">流</param>

/// <returns></returns>

public static Image SaveImageInStream(Rectangle r, ImageFormat ifa, Stream s)

{

Image myImage = new Bitmap(r.Width, r.Height);

Graphics g = Graphics.FromImage(myImage);

g.CopyFromScreen(r.Location, new Point(0, 0), new Size(r.Width, r.Height));

IntPtr dc1 = g.GetHdc();

g.ReleaseHdc(dc1);

if (s != null)

{

myImage.Save(s, ImageFormat.Jpeg);

}

return myImage;

}

}

  • 上一篇:如何利用BBI指標捕捉強勢股
  • 下一篇:語音指示器源代碼
  • copyright 2024編程學習大全網