zoukankan      html  css  js  c++  java
  • 【UWP开源】图片编辑器,带贴图、滤镜、涂鸦等功能

    目录

    说明

    最近空余时间研究了一下Win2D,它能为我们在UWP中提供一种类似GDI那样的绘图方法。就像传统Winform、MFC中那样重写OnPaint相关的方法,然后调用DrawLine绘制一条直线。有了它的帮助,我们可以在UWP中创建复杂的UI,听起来是不是很爽呢?

    本文源码地址:https://github.com/sherlockchou86/ImageEditor.UWP

    功能

    主要功能已经完成,主要包括:

    • edit local and remote(net) images;
    • select layout(1:1 3:4 4:3), select backcolor for canvas, rotate and crop the background image;
    • tune brightness, degree of fuzzy and degree of sharpening;
    • add stickers onto canvas(download templates from internet);
    • apply a kind of filters(8 filters supported);
    • add tags such as location, @friends, adn etc;
    • draw on the canvas, you can select pen-size, pen-color(image) which you like;
    • save the canvas as a BitmapImage object, which you can directly use.

    Note:

    - 贴纸是根据自定义的json文件,自动从网上下载的。也就是说,贴纸不是固定不变的,你可以随时修改json文件,随时更新贴纸模板。详细json格式参见下面;

    - 源码中我并没有创建单独的Library,你如果需要封装成独立的库,只需要创建一个Library Project,然后将'Controls', 'DrawingObjects', 'Images', 'Resources' and 'Tools' 目录拷贝到新建的Project中去即可,注意必要时需要修改NS。

    下面是下载贴纸的json文件范例:

    实现原理

    其实原理相当简单,熟悉gdi绘图的人很容易理解:

    - 绘制直线

    graphics.DrawLine((float)Left, (float)(Top + (Height / 3)), (float)(Left + Width), (float)(Top + Height / 3), Colors.Orange, 0.3f, style);

    - 填充圆形

    graphics.FillCircle((float)Left, (float)Top, radius, DrawColor);

    - 关于滤镜效果

    Win2D中有现成的滤镜类,只需要传入Image,设置相关属性,那么返回来的便是滤镜效果。每种效果都是一个ICanvasImage,直接将其Draw在UI上或者一个CanvasBitmap上即可。

    - 关于代码结构 

      

    可以看到,代码中创建了许多的DrawingObject类型,熟悉gdi的童鞋们相比已经知道什么情况了。

    使用方法

     关于控件的使用方法,就更简单了。参见下面代码:

    分三步:

    - 创建一个ImageEditor的对象;

    - 调用它的Show方法,给它传递StorageFile或者Uri参数;

    - 注册它的ImageEditedCompleted事件,接收编辑完成的Image。

    几张截图

    几张截图,大部分是PC上的,手机上也适用。界面太糙,UI可以自己去设计,底图旋转,剪切功能没有完善,如果需要用得着的童鞋自己实现一下即可,不费力

  • 相关阅读:
    asp.net 通过Global.asax 定时执行web应用中的的程序
    asp.net 小东西,备忘
    Running Ajax.NET Professional (AjaxPro) under ASP .NET MVC(转)
    Silverlight仿Flash换肤一种简单实现方法
    [转]silverlight中的socket编程注意事项
    四月雨带来五月花
    我的六月
    我的夜
    我的七月
    我们站在毕业的面前 这里是不是成熟的分界线
  • 原文地址:https://www.cnblogs.com/xiaozhi_5638/p/5603681.html
Copyright © 2011-2022 走看看