用纯C#实现截取屏幕指定区域

以前在别的地方见过一个通过调用系统API实现屏幕截图的例子,从内心来说我不太喜欢在C#代码中出现这种情况,现在什么都讲“和谐”,我觉得这种做法就是破坏了我们的“和谐”代码,呵呵,开玩笑,有的时候,不通过系统API确实难以做到的。

下面讲述的就是怎么通过纯C#来实现屏幕截图,代码如下:

// 截取全屏图象
private void btnFullScreen_Click( object sender,EventArgse)
{
// 创建图象,保存将来截取的图象
Bitmapimage = new Bitmap(Screen.PrimaryScreen.Bounds.Width,Screen.PrimaryScreen.Bounds.Height);
GraphicsimgGraphics
= Graphics.FromImage(image);
// 设置截屏区域
imgGraphics.CopyFromScreen( 0 , 0 , 0 , 0 , new Size(Screen.PrimaryScreen.Bounds.Width,Screen.PrimaryScreen.Bounds.Height));
// 保存
SaveImage(image);
}

// 保存图象文件
private void SaveImage(Imageimage)
{
if (saveFileDialog.ShowDialog( this ) == DialogResult.OK)
{
string fileName = saveFileDialog.FileName;
string extension = Path.GetExtension(fileName);
if (extension == " .jpg " )
{
image.Save(fileName,ImageFormat.Jpeg);
}
else
{
image.Save(fileName,ImageFormat.Bmp);
}
}
}

这段代码其实很简单,可以设置截屏区域的位置和大小,只不过只能在.net 2.0环境中才能运行。本人正在进一步完善实现拖动拖动截屏技术,类似于QQ中的截屏办法,正在攻关中,如果完成就向大家公布源代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#实现屏幕取词功能,主要需要以下步骤: 1. 获取鼠标当前所在位置 可以使用 `Cursor.Position` 属性获取当前鼠标的位置,代码如下: ``` Point mousePosition = Cursor.Position; ``` 2. 获取屏幕指定位置的截图 可以使用 `Screen` 类的 `Capture` 方法获取屏幕指定位置的截图。该方法需要传入一个 `Rectangle` 对象,表示需要截取的矩形区域。代码如下: ``` Rectangle screenRect = new Rectangle(mousePosition.X, mousePosition.Y, 1, 1); Bitmap screenshot = new Bitmap(screenRect.Width, screenRect.Height); using (Graphics g = Graphics.FromImage(screenshot)) { g.CopyFromScreen(screenRect.Location, Point.Empty, screenRect.Size); } ``` 3. 对截图进行 OCR 识别 可以使用 OCR(Optical Character Recognition,光学字符识别)技术对截图中的文字进行识别。目前有很多优秀的 OCR 引擎,比如 Tesseract、Microsoft OCR 等。这里以 Tesseract 为例,代码如下: ``` var engine = new TesseractEngine("./tessdata", "eng", EngineMode.Default); var page = engine.Process(screenshot); var text = page.GetText(); ``` 4. 显示识别结果 最后,将识别结果显示在屏幕上即可。可以使用 `MessageBox` 或者其他控件来显示识别结果,代码如下: ``` MessageBox.Show(text); ``` 需要注意的是,以上代码仅提供了一个基本的思路,具体实现可能还需要考虑一些细节问题,比如如何优化 OCR 的识别效果、如何处理识别结果中的噪点等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值