博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows Phone 8.1 多媒体(1):相片
阅读量:5797 次
发布时间:2019-06-18

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

Windows Phone 8.1 多媒体(1):相片

 


 

(1)拍摄相片

1)CaptureElement

CaptureElement 是放在应用界面上预览拍照的控件:

 

2)MediaCapture

MediaCapture 是控制拍摄的重要类。

首先初始化 MediaCapture,并将 CaptureElement 的 Source 设为 该 MediaCapture:

MediaCapture photoCapture;ImageEncodingProperties imgEncodingProperties;protected override async void OnNavigatedTo(NavigationEventArgs e){    capturePhotoElement.Source = await Initialize();    await photoCapture.StartPreviewAsync();}private async Task
Initialize(){ photoCapture = new MediaCapture(); await photoCapture.InitializeAsync(); photoCapture.VideoDeviceController.PrimaryUse = CaptureUse.Photo; imgEncodingProperties = ImageEncodingProperties.CreateJpeg(); imgEncodingProperties.Width = 640; imgEncodingProperties.Height = 480; return photoCapture;}

然后在按下某个按钮的时候完成拍摄:

private async void btnCapturePhoto_Click(object sender, RoutedEventArgs e){    var photo = await KnownFolders.PicturesLibrary.CreateFileAsync("photo.jpg", CreationCollisionOption.GenerateUniqueName);    await photoCapture.CapturePhotoToStorageFileAsync(imgEncodingProperties, photo);}

也可以添加手机实体按键的事件:

HardwareButtons.CameraHalfPressed += HardwareButtons_CameraHalfPressed;async void HardwareButtons_CameraHalfPressed(object sender, CameraEventArgs e){    await photoCapture.VideoDeviceController.FocusControl.FocusAsync();}

最后记得在离开页面时释放 MediaCapture 资源:

protected override void OnNavigatedFrom(NavigationEventArgs e){    if( photoCapture != null )    {        photoCapture.Dispose();        photoCapture = null;    }}

 

(2)编辑相片

我在这里使用了 Nokia Imaging SDK 和 WritableBitmapEx 库,可在 Nuget 中搜索并安装。

注意要将配置管理器中的 CPU 改成 ARM,否则 Nokia Imaging SDK 将不可用。

使用方法非常简单,比如以下为一张图片添加滤镜:

WriteableBitmap originBitmap;WriteableBitmap editedBitmap;private async void editButton_Click(object sender, RoutedEventArgs e){    var imageSource = new BitmapImageSource(originBitmap.AsBitmap());    using( var effect = new FilterEffect(imageSource) )    {        var filter = new AntiqueFilter();        effect.Filters = new[] { filter };        var renderer = new WriteableBitmapRenderer(effect, originBitmap);        editedBitmap = await renderer.RenderAsync();        editedBitmap.Invalidate();    }    myImage.Source = editedBitmap;}

更多的使用方法可到诺基亚帮助中心查看:

转载于:https://www.cnblogs.com/xiaoshi3003/p/3784030.html

你可能感兴趣的文章
DICOM简介
查看>>
Scrum之 Sprint计划会议
查看>>
List<T> to DataTable
查看>>
[Java]Socket和ServerSocket学习笔记
查看>>
stupid soso spider
查看>>
svn命令在linux下的使用
查看>>
Gradle之module间依赖版本同步
查看>>
java springcloud版b2b2c社交电商spring cloud分布式微服务(十五)Springboot整合RabbitMQ...
查看>>
SpringCloud使用Prometheus监控(基于Eureka)
查看>>
10g手动创建数据库
查看>>
Spring MVC EL表达式不能显示
查看>>
【致青春】我们挥霍时间的年代
查看>>
Windwos Server 2008 R2 DHCP服务
查看>>
SAS和SATA硬盘的区别
查看>>
现代程序设计 学生情况调查
查看>>
U盘安装linux后无法引导
查看>>
C# 矩阵作业
查看>>
俺的新书《Sencha Touch实战》终于出版了
查看>>
关于数据库查询时报“query block has incorrect number of result columns”
查看>>
li下的ul----多级列表
查看>>