在.net中,如何简单快捷地实现Photoshop滤镜组中的装饰边框效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库。下面开始演示关键代码,您也可以在文末下载全部源码:

设置授权

第一步:在引用了SharpImage.dll之后,调用SharpImage方法之前,一定要先通过下面代码来设置授权信息,如果是试用版,直接输入Test即可。

  1. KeyMgr.SetKey("Test");

初始化一个ImageEngine

从之前的一篇博文中,我们介绍了一张图看懂SharpImage,从那篇文章我们可以看出,SharpImage通过ImageEngine来作为图像处理的基石,所有效果都是作为ImageEngine的Effects来进行的,Effects将被应用到ImageEngine的各种Element上,产生千变万化的效果。请看下面的代码:

  1. //实例化ImageEngine
  2. engine = new ImageEngine();

设置ImageEngine的基础参数

对ImageEngine进行一些自定义设置,具体可参考API手册。代码如下:

  1. //对一些基础属性进行设置
  2. engine.Canvas.AutoSize = true;
  3. engine.Canvas.CenterElements = true;
  4. engine.Canvas.Width = 320;//此处一般设置为图片的宽即可
  5. engine.Canvas.Height = 213;//此处一般设置为图片的高即可
  6. engine.Canvas.Fill.Type = FillType.Solid;//采用纯色填充画布
  7. engine.Canvas.Fill.BackgroundColor = Color.White;//画布为白色的

加载待处理的图片

将待处理的图片加载到内存,SharpImage支持多种方式加载:从图片URL, 本地路径,Bitmap对象, 字节数组, Base64字符串,可任选其一。这里演示下三种方式的代码:

  1. #region 加载测试图片的GDI+对象
  2. bmpDemoImage = Properties.Resources.demo;
  3. #endregion
  4. #region 加载测试图片的字节流
  5. using (MemoryStream ms = new MemoryStream())
  6. {
  7. bmpDemoImage.Save(ms, bmpDemoImage.RawFormat);
  8. arrDemoImage = ms.ToArray();
  9. }
  10. #endregion
  11. #region 加载测试图片的Base64字符串
  12. strBase64DemoImage = Convert.ToBase64String(arrDemoImage);
  13. #endregion

初始化ImageElement

在SharpImage中,图片被抽象为ImageElement,我们将待处理图片,绑定到ImageElement上。代码如下:

  1. //建立一个ImageElement
  2. imageEle = new ImageElement();
  3. //接下来,根据具体的图片数据源类型来为ImageElement提供数据,这里演示是用一个ComboBox来手动选择的
  4. switch (cmbBox11.SelectedIndex)
  5. {
  6. case 0:
  7. //图片URL
  8. imageEle.SourceType = ImageSource.File;
  9. imageEle.SourceFile = "http://www.zzsgzn.com/images/demo.jpg";
  10. break;
  11. case 1://本地路径
  12. imageEle.SourceType = ImageSource.File;
  13. imageEle.SourceFile = "c:\\demo.jpg";
  14. break;
  15. case 2://GDI+对象
  16. imageEle.SourceType = ImageSource.Image;
  17. imageEle.SourceImage = bmpDemoImage;
  18. break;
  19. case 3://字节数组
  20. imageEle.SourceType = ImageSource.Binary;
  21. imageEle.SourceBinary = arrDemoImage;
  22. break;
  23. case 4://base64字符串
  24. imageEle.SourceType = ImageSource.Base64String;
  25. imageEle.SourceBase64 = strBase64DemoImage;
  26. break;
  27. }

绑定ImageElement和ImageEngine

将ImageElment对象和ImageEngine绑定在一起, 只需要执行下面的代码即可:

  1. //将该ImageElement绑定到图像引擎对象上
  2. engine.Elements.Add(imageEle);

此时,一定要注意:engine.Elements可以包含很多的element,最终的效果,将是这些元素的叠加。这个原理和Photoshop的图层叠加是一个原理。

应用滤镜

哈吼!准备工作就绪啦!下面应用滤镜,装饰边框滤镜是DecorativeBorderEffect,实例化并应用到ImageEngine即可,代码如下:

  1. //初始化滤镜,并添加到ImageEngine的效果滤镜组中
  2. DecorativeBorderEffect effect = new DecorativeBorderEffect();
  3. effect.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid;
  4. effect.Width = 15;
  5. effect.Fill.BackgroundColor = Color.Yellow;
  6. //此处,您也可以对该滤镜的具体参数进行调整,具体参考API手册
  7. ...
  8. engine.Effects.Add(effect);

获取处理结果

应用完之后,就可以获取处理结果啦!

  1. Image bmpResult = engine.GetOutputImage();

运行效果图

demo源码下载

点击下载源码

相关推荐

您可以需要了解如何获取摄像头帧图片,或者桌面屏幕图片,请了解SharpCapture:
SharpCapture,桌面屏幕,摄像头,音视频采集类库

您可以需要了解对摄像头亮度对比度色调曝光等几十种参数进行调整,请了解SharpCamera:
SharpCamera,专业的摄像头高级参数深控类库

C# vb .net实现装饰边框效果滤镜的更多相关文章

  1. C# vb .net实现淡色效果滤镜

    在.net中,如何简单快捷地实现Photoshop滤镜组中的淡色效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第一步 ...

  2. C# vb .net实现颜色替换效果滤镜

    在.net中,如何简单快捷地实现Photoshop滤镜组中的颜色替换效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第 ...

  3. C# vb .net实现相机视图效果滤镜

    在.net中,如何简单快捷地实现Photoshop滤镜组中的相机视图效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第 ...

  4. C# vb .net实现玻璃桌子效果滤镜

    在.net中,如何简单快捷地实现Photoshop滤镜组中的玻璃桌子效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第 ...

  5. 设计模式:装饰器(Decorator)模式

    设计模式:装饰器(Decorator)模式 一.前言    装饰器模式也是一种非常重要的模式,在Java以及程序设计中占据着重要的地位.比如Java的数据流处理,我们可能看到数据流经过不同的类的包装和 ...

  6. Decorator模式(装饰器模式)

    Decorator模式? 假如现在有一块蛋糕,如果只涂上奶油,其他什么都不加,就是奶油蛋糕.如果加上草莓,就是草莓奶油蛋糕.如果再加上一块黑色巧克力板,上面用白色巧克力写上姓名,然后插上代表年龄的蜡烛 ...

  7. web设计页面跳转的方法

    一.asp.net c# 打开新页面或页面跳转 1. 最常用的页面跳转(原窗口被替代):Response.Redirect("newpage.aspx"); 2. 利用url地址打 ...

  8. [转]html超链接打开的窗口大小

    <a href="#" onclick="javascript:window.open('http://www.baidu.com','','height=20,w ...

  9. JSP弹出窗口和模式对话框

    本文转载于其它blog,在此向本文原创者,致意!    JSP 弹出窗口  一.window.open() 基础知识      1.window.open()支持环境:  JavaScript1.0+ ...

随机推荐

  1. player: 初始化分析

    //1. //cocos 程序开始运行时执行的函数 bool AppDelegate::applicationDidFinishLaunching() { // initialize director ...

  2. <每日 1 OJ> -LeetCode 7. 整数反转

    题目描述 给定一个 32 位有符号整数,将整数中的数字进行反转. 示例 1: 输入: 123 输出: 321  示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 ...

  3. hyper-v显示分辨率如何自动调整

    打开文件/etc/default/grub 找到GRUB_CMDLINE_LINUX_DEFAULT所在行,在最后加上 video=hyperv_fb:[分辨率],比如我想要的分辨率是1600×900 ...

  4. Python数据分析学习(二)

    转摘:https://segmentfault.com/a/1190000015613967 本篇将继续上一篇数据分析之后进行数据挖掘建模预测,这两部分构成了一个简单的完整项目.结合两篇文章通过数据分 ...

  5. How to Use Convolutional Neural Networks for Time Series Classification

    How to Use Convolutional Neural Networks for Time Series Classification 2019-10-08 12:09:35 This blo ...

  6. Nginx返回固定json或者文本格式的方法

    在系统还没有做集群的情况下,直接重启项目时刚好用户在使用的话,一般都会受到投诉,那么使用nginx返回类似“系统维护”的提示信息并且提前在应用上面做通知才是合适的做法 那么记录一下nginx里面的配置 ...

  7. 每日题解: 两数之和 & 有效的括号

  8. NodeJs FS 文件系统模块

    1. fs.stat 检测是文件还是目录 fs.stat('html',function(err,stats){ if(err){ console.log(err); return false; } ...

  9. tf.tile()函数理解

    转载:https://blog.csdn.net/tsyccnh/article/details/82459859 tensorflow中的tile()函数是用来对张量(Tensor)进行扩展的,其特 ...

  10. 【软件工具】ImageMagick

    如何安装; 如何检查是否安装成功呢: 如何使用: https://imagemagick.org/index.php     参考 1. 官网: 完