一、程序运行截图

二、获取屏幕截图的方法

首先知道我们可以通过Screen.PrimaryScreen.Bounds获取到当前整个屏幕,再利用Bitmap和Graphics就可以得到整个屏幕的图片了。

Screen.PrimaryScreen.WorkingArea这个获得是不包含任务栏的屏幕

      获取屏幕代码如下所示:

         /// <summary>
/// 获取屏幕图片
/// </summary>
private void GetScreenImage()
{
Bitmap bitMap = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
Graphics g = Graphics.FromImage(bitMap);
g.CopyFromScreen(, , , , new Size(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height));
}

这样获得的屏幕截图并不能满足我们的要求,我们需要的是要想QQ那样的可以可以自己选区域的截图,这个功能待以后有时间再研究如何实现。

三、简单图像处理

获得图片后,我们总是想要对它进行一些处理,实现不同的效果。为了实现一些效果,我们需要对图片的每个像素进行修改。

3.1 黑白效果

实现方法:

 1         /// <summary>
/// 黑白效果
/// </summary>
public Bitmap ImgBlackWhite(Bitmap bitmap)
{
for (int i = ; i < bitmap.Width; i++)
{
for (int j = ; j < bitmap.Height; j++)
{
Color pixel = bitmap.GetPixel(i, j);
int avg = GetBWNum(pixel, EnumUtil.Calculate.加权算法);
int r = avg;
int g = avg;
int b = avg;
bitmap.SetPixel(i, j, Color.FromArgb(r, g, b));
}
}
return bitmap;
} /// <summary>
/// 黑白效果算法
/// </summary>
/// <param name="pixel"></param>
/// <param name="calcul"></param>
/// <returns></returns>
private int GetBWNum(Color pixel, EnumUtil.Calculate calcul)
{
int result = ;
switch (calcul)
{
case EnumUtil.Calculate.加权算法:
result = ((int)(0.7 * pixel.R) + (int)(0.2 * pixel.G) + (int)(0.1 * pixel.B));
break;
case EnumUtil.Calculate.平均值:
result = (pixel.R + pixel.G + pixel.B) / ;
break;
case EnumUtil.Calculate.最大值:
result = pixel.R > pixel.G ? pixel.R : pixel.G;
result = result > pixel.B ? result : pixel.B;
break;
}
return result;
}

3.2 负片效果

实现方法:

         /// <summary>
/// 负片效果
/// </summary>
public Bitmap ImgNagative(Bitmap bitmap)
{
for (int i = ; i < bitmap.Width; i++)
{
for (int j = ; j < bitmap.Height; j++)
{
Color c = bitmap.GetPixel(i, j); int r = - c.R;
int g = - c.G;
int b = - c.B;
bitmap.SetPixel(i, j, Color.FromArgb(r, g, b));
}
}
return bitmap;
}

3.3 浮雕效果

实现方法:

         /// <summary>
/// 浮雕效果
/// </summary>
public Bitmap ImgCameo(Bitmap bitmap, EnumUtil.ImageStyle style)
{
Color pixel, pixel2; for (int i = ; i < bitmap.Width - ; i++)
{
for (int j = ; j < bitmap.Height - ; j++)
{
pixel = bitmap.GetPixel(i, j);
pixel2 = bitmap.GetPixel(i + , j + );
bitmap.SetPixel(i, j, ImgCameoCalcul(pixel, pixel2, style));
}
}
return bitmap;
} /// <summary>
/// 浮雕算法
/// </summary>
/// <param name="pixel"></param>
/// <param name="pixel2"></param>
/// <param name="style"></param>
/// <returns></returns>
private Color ImgCameoCalcul(Color pixel, Color pixel2, EnumUtil.ImageStyle style)
{
Color cResult;
int r = , g = , b = ;
switch (style)
{
case EnumUtil.ImageStyle.浮雕阴刻:
r = Math.Abs(pixel.R - pixel2.R + ) > ? : Math.Abs(pixel.R - pixel2.R + );
g = Math.Abs(pixel.G - pixel2.G + ) > ? : Math.Abs(pixel.G - pixel2.G + );
b = Math.Abs(pixel.B - pixel2.B + ) > ? : Math.Abs(pixel.B - pixel2.B + );
break;
case EnumUtil.ImageStyle.浮雕阳刻:
r = Math.Abs(pixel2.R - pixel.R + ) > ? : Math.Abs(pixel2.R - pixel.R + );
g = Math.Abs(pixel2.G - pixel.G + ) > ? : Math.Abs(pixel2.G - pixel.G + );
b = Math.Abs(pixel2.B - pixel.B + ) > ? : Math.Abs(pixel2.B - pixel.B + );
break;
}
cResult = Color.FromArgb(r, g, b);
return cResult;
}

小工具:截图&简单图像处理的更多相关文章

  1. 小工具:天气查询 Vs自定义设置 DevGridControl中GridView排序问题 小工具:火车票查询 小工具:邮件发送 小工具:截图&简单图像处理

    小工具:天气查询   开发一个天气查询的工具主要由两步构成,一是数据的获取,二是数据的展示.  一.数据获取 数据获取又可以分为使用其它公司提供的API和手动抓取其它网站数据. 1. 某公司提供的AP ...

  2. 用C语言实现解析简单配置文件的小工具

    本文介绍作者写的一个小工具,简单的代码中包含了C语言对字符串的处理技巧,对文本文件的简单解析,二进制文件的数据复制的方法,以及格式化输出文本文件的示例. 工具的输入是如下内容的配置文件: ;资源管理器 ...

  3. 2014年Windows平台软件推荐:神器小工具(骨灰级

    原文  http://www.wtoutiao.com/a/120621.html 底层工具 “If you know how to use Process Monitor competently, ...

  4. Windows平台软件推荐:神器小工具(骨灰级)

    底层工具 "If you know how to use Process Monitor competently, people of both sexes will immediately ...

  5. Visual Subst - 简单将任意文件夹挂载模拟成驱动器盘符硬盘分区的小工具

    随着电脑的使用,硬盘里的资料一天比一天多,也越来越杂乱.一些朋友为了方便文件管理,会考虑重新分区,让C.D.E等盘符分别担任不同的角色.不过,不分区的话也有一些小工具可以帮你实现. Visual Su ...

  6. 用C#Winform写个简单的批量清空文件内容和删除文件的小工具

    用C#Winform写个简单的批量清空文件内容和删除文件的小工具 本文介绍这个简单得不能再简单的小项目.做这个项目,有以下目的. 1 当然是做个能用的工具 2 学习使用Github 关于用VS2013 ...

  7. 原创SQlServer数据库生成简单的说明文档小工具(附源码)

    这是一款简单的数据库文档生成工具,主要实现了SQlServer生成说明文档的小工具,目前不够完善,主要可以把数据库的表以及表的详细字段信息,导出到 Word中,可以方便开发人员了解数据库的信息或写技术 ...

  8. 原创SQlServer数据库生成简单的说明文档包含(存储过程、视图、数据库批量备份)小工具(附源码)

    这是一款简单的数据库文档生成工具,主要实现了SQlServer生成说明文档的小工具,目前不够完善,主要可以把数据库的表以及表的详细字段信息,导出到 Word中,可以方便开发人员了解数据库的信息或写技术 ...

  9. autoit获取ie浏览器简单操作网页(GUI小工具)

    需要稍稍熟悉一下autoti提供的语言, 我简单做了一个带GUI的小工具,实现根据IE标题点击页面内的LinkText 注意:使用时IE窗口是显示状态才可以获取到(可以在脚本中加入搜索IE句柄,将ie ...

随机推荐

  1. AdaBoost对实际数据分类的Julia实现

    写在前面 AdaBoost是机器学习领域一个很重要很流行的算法,而Julia是一门新兴的发展迅速的科学计算语言.本文将从一个实际例子出发,展示如何用Julia语言实现AdaBoost算法. 什么是Ad ...

  2. c#代码技巧

    1.#region #endregion 1.#region 是一个分块预处理命令,主要用于编辑代码分段,在编译时会自动屏蔽,同时该指令可以使代码在VS代码编辑器中折叠或展开: 2.#region必须 ...

  3. Head First设计模式之生成器模式

    一.定义 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.建造者模式是一种对象创建型模式. 二.结构 角色 Builder(抽象建造者):它为创建一个产品Product对象的 ...

  4. grpc介绍

    grpc入门(一) 一.什么是grpc grpc是谷歌开源的一款高性能的rpc框架 (https://grpc.io),可以使用protocol buffers作为IDL(Interface Defi ...

  5. TurnipBit开发板DIY呼吸的吃豆人教程实例

    转载请以链接形式注明文章来源(MicroPythonQQ技术交流群:157816561,公众号:MicroPython玩家汇) 0x00前言 吃豆人是耳熟能详的可爱形象,如今我们的TurnipBit也 ...

  6. System.Windows.Forms.PropertyGrid的使用

    PropertyGrid 控件简介 .NET 框架 PropertyGrid 控件是 Visual Studio .NET 属性浏览器的核心.PropertyGrid 控件显示对象或类型的属性,并主要 ...

  7. Java中ArrayList与LinkedList的区别

    Java中ArrayList与LinkedList的区别 一般大家都知道ArrayList和LinkedList的区别: 1. ArrayList的实现是基于数组,LinkedList的实现是基于双向 ...

  8. Go从三个站点中返回响应最快的

    利用协程可以轻松实现 package main import ( "fmt" "github.com/imroc/req" ) func mirroredQue ...

  9. 使用Git命令把本地项目上传到github上托管

    (1)在github上,新建一个仓库 (2)打开git-bash,进入项目目录下 (3)git init (4)git add . (5)git status (6)git commit -m &qu ...

  10. Pandas系列之入门篇

    Pandas系列之入门篇 简介 pandas 是 python用来数据清洗.分析的包,可以使用类sql的语法方便的进行数据关联.查询,属于内存计算范畴, 效率远远高于硬盘计算的数据库存储.另外pand ...