• C# vb .net实现圆角矩形特效滤镜


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

    设置授权

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

    KeyMgr.SetKey("Test");
    

    初始化一个ImageEngine

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

    //实例化ImageEngine
    engine = new ImageEngine();
    

    设置ImageEngine的基础参数

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

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

    加载待处理的图片

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

    #region 加载测试图片的GDI+对象
    bmpDemoImage = Properties.Resources.demo;
    #endregion
    
    #region 加载测试图片的字节流
    using (MemoryStream ms = new MemoryStream())
    {
        bmpDemoImage.Save(ms, bmpDemoImage.RawFormat);
        arrDemoImage = ms.ToArray();
    }
    #endregion
    
    #region 加载测试图片的Base64字符串
    strBase64DemoImage = Convert.ToBase64String(arrDemoImage);
    #endregion
    

    初始化ImageElement

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

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

    绑定ImageElement和ImageEngine

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

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

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

    应用滤镜

    哈吼!准备工作就绪啦!下面应用滤镜,圆角矩形滤镜是RoundCornersEffect,实例化并应用到ImageEngine即可,代码如下:

    //初始化滤镜,并添加到ImageEngine的效果滤镜组中
    RoundCornersEffect effect = new RoundCornersEffect();
    
    //此处,您也可以对该滤镜的具体参数进行调整,具体参考API手册
    ...
    
    
    engine.Effects.Add(effect);
    

    获取处理结果

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

    Image bmpResult = engine.GetOutputImage();
    

    运行效果图

    [外链图片转存失败(img-IoLM2xy2-1569390566479)(http://blog.zzsgzn.com/posts/27061/1.jpg)]

    demo源码下载

    点击下载源码

    相关推荐

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

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

  • 相关阅读:
    一款由张鹏老师录制的一周HOLD住HTML+CSS视频教程分享给大家
    一款LAMP兄弟连最近录制的《HTML5视频教程》此款视频不错哟!上吧
    一款HTML5的基础视频教程分享给大家,希望大家好好学习啊。
    分享一款由杨中科老师主讲的javascript视频教程,属于.NET课程是视频教程
    今天给大家带来的视频教程是LINUX视频教程,希望大伙能在里面学到你想要的!
    周一好亲们!今天还给大家分享的是Oracle视频教程,来自于传智播客!
    零晨了,为大家分享一套很好的javascript视频教程!喜欢的拿走啊。
    最新为大家整理的一套android视频教程,有兴趣的便宜可以去看看!
    .net的基础学习,.NET视频教程
    yii2 (not set), GridView
  • 原文地址:https://www.cnblogs.com/rollsroyce/p/11680390.html
Copyright © 2020-2023  润新知