博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【UWP开源】图片编辑器,带贴图、滤镜、涂鸦等功能
阅读量:4320 次
发布时间:2019-06-06

本文共 1594 字,大约阅读时间需要 5 分钟。

目录

 

说明

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

本文源码地址:

 

功能

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

  • 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可以自己去设计,底图旋转,剪切功能没有完善,如果需要用得着的童鞋自己实现一下即可,不费力

转载于:https://www.cnblogs.com/xiaozhi_5638/p/5603681.html

你可能感兴趣的文章
闲话函数式变成与OOP
查看>>
Linux-正则表达式与三剑客
查看>>
php中,post与get获取参数的异同
查看>>
警惕!年轻人要拥抱自动化和人工智能作为通信的未来
查看>>
Python给数字前固定位数加零
查看>>
python 多进程和多线程对比
查看>>
【转载】 wpf无边框的方法以及拖拽的问题
查看>>
Web自动化测试 二 ----- HTML
查看>>
sql 入门经典(第五版) Ryan Stephens 学习笔记  第四部分:建立复杂的数据库查询/...
查看>>
[原创]Keys的基本操作总结,判断Keys中是否存在Keys.Control|Keys.Alt,移除Keys中的部分键值。...
查看>>
主题样式之背景图片不随鼠标滑动而移动
查看>>
Centos 中文乱码
查看>>
IDLE常用快捷键
查看>>
MyBatis课程4
查看>>
Git使用笔记
查看>>
Java概述
查看>>
Python数据分析与展示第0&1周学习笔记(北理工 嵩天)
查看>>
log4cplus使用
查看>>
[git]rebase和merge
查看>>
java动态代理
查看>>