Windows Phone开发(23):启动器与选择器之CameraCaptureTask和PhotoChooserTask

本文主要是介绍Windows Phone开发(23):启动器与选择器之CameraCaptureTask和PhotoChooserTask,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这两个组件都属于选择器,而且它们也有很多相似的地方,最明显的上一点,它们都是用来选择图片。

 

 

一、CameraCaptureTask选择器。

 

它用于启动照相机,当你拍下照片后,自动把照的字节流返回给调用方应用程序。前文说过,启动器和选择的使用方法和步骤都是一样的。对于CameraCaptureTask组件也如此,不过注意的一点是,处理Completed事件时一定要记住,尽可能的使用页面类的Dispatcher.BeginInvoke方法,因为异步回调直接访问UI元素是不安全的,极有可能会引发异常,但我不是说绝对。

 

    <Grid><Grid.RowDefinitions><RowDefinition Height="*"/><RowDefinition Height="auto"/></Grid.RowDefinitions><Image x:Name="img" Grid.Row="0" Stretch="Uniform"HorizontalAlignment="Stretch"VerticalAlignment="Stretch"/><Button x:Name="btnCamera" Grid.Row="1"Content="启动相机程序" Click="btnCamera_Click"/></Grid>


 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
// 引入以下命名空间。
using Microsoft.Phone.Tasks;
using System.Windows.Media.Imaging;namespace PhoneApp1
{public partial class MainPage : PhoneApplicationPage{// 第一步,声明类级别的局部变量,并实例化。CameraCaptureTask MyCamera = new CameraCaptureTask();// 构造函数public MainPage(){InitializeComponent();// 第二步,在页面构造函数中注册完成回调事件MyCamera.Completed += new EventHandler<PhotoResult>(MyCamera_Completed);}private void btnCamera_Click(object sender, RoutedEventArgs e){// 第三步,显示组件MyCamera.Show();}// 第四步,处理事返回结果void MyCamera_Completed(object sender, PhotoResult e){// 确定用户确认了还是取消了操作。if (e.TaskResult == TaskResult.OK){// 从返回的流中创建图象BitmapImage bmp = new BitmapImage();try{bmp.SetSource(e.ChosenPhoto);// 把图象作为Image控件的源。// 防止异步回调直接访问UI元素,故应使用BeginInvoke方法。Dispatcher.BeginInvoke(() =>{this.img.Source = bmp;});}catch (Exception ex){MessageBox.Show(ex.Message);}}}}
}


 

当然,在模拟器中你是不能进行拍摄的,但可以进行模拟操作,也就是说无论你拍的什么,最后都是返回同一张照片。

 

 

 

 

二、PhotoChooserTask选择器。

 

这个选择器已经包含CameraCaptureTask的功能,当然,它主要是为了选择图片。

1、ShowCamera属性设置是否显示可以让用户启动相机的按钮;

2、PixelHeight:选择图片后将其裁剪的高度;

3、PixelWidth属性与上面相同,裁剪宽度。

照片被选择后,以流的形式返回,驼过Completed事件的参数PhotoResult的ChosenPhoto属性获取。

 

    <Grid><Grid.RowDefinitions><RowDefinition Height="*"/><RowDefinition Height="auto"/></Grid.RowDefinitions><Image x:Name="img" Stretch="Uniform" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.Row="0"/><Grid Grid.Row="1"><Grid.ColumnDefinitions><ColumnDefinition Width="auto"/><ColumnDefinition Width="auto"/><ColumnDefinition Width="auto"/><ColumnDefinition Width="auto"/></Grid.ColumnDefinitions><Grid.RowDefinitions><RowDefinition Height="auto"/><RowDefinition Height="auto"/></Grid.RowDefinitions><TextBlock Grid.Column="0" Grid.Row="0" Text="高度:"/><TextBlock Grid.Column="2" Grid.Row="0" Text="宽度:"/><TextBox x:Name="txtHeight" Grid.Column="1"Grid.Row="0" Width="160" Height="auto" FontSize="20"><TextBox.InputScope><InputScope><InputScopeName NameValue="Number"/></InputScope></TextBox.InputScope></TextBox><TextBox x:Name="txtWidth" Grid.Column="3"Grid.Row="0" Width="160" Height="auto" FontSize="20"><TextBox.InputScope><InputScope><InputScopeName NameValue="Number"/></InputScope></TextBox.InputScope></TextBox><CheckBox x:Name="chkShowCamera"Grid.Row="1" Grid.ColumnSpan="2"Content="显示启动相机"/><Button x:Name="btnShow"Grid.Column="2" Grid.Row="1"Grid.ColumnSpan="2"Content="选择图片..."Margin="5"Click="btnShow_Click"/></Grid></Grid>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
//
using Microsoft.Phone.Tasks;
using System.Windows.Media.Imaging;namespace PhoneApp1
{public partial class Page1 : PhoneApplicationPage{PhotoChooserTask ptc = new PhotoChooserTask();public Page1(){InitializeComponent();ptc.Completed += new EventHandler<PhotoResult>(ptc_Completed);}void ptc_Completed(object sender, PhotoResult e){if (e.TaskResult == TaskResult.OK){BitmapImage bmp = new BitmapImage();try{bmp.SetSource(e.ChosenPhoto);Dispatcher.BeginInvoke(() => {this.img.Source = bmp;});}catch (Exception ex){MessageBox.Show(ex.Message);}}}private void btnShow_Click(object sender, RoutedEventArgs e){// 设置相关属性ptc.PixelHeight = int.Parse(txtHeight.Text);ptc.PixelWidth=int.Parse(txtWidth.Text);ptc.ShowCamera = this.chkShowCamera.IsChecked.HasValue ? chkShowCamera.IsChecked.Value : false;ptc.Show();}}
}

 

 

 

 

这篇关于Windows Phone开发(23):启动器与选择器之CameraCaptureTask和PhotoChooserTask的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/827833

相关文章

SpringBoot开发中十大常见陷阱深度解析与避坑指南

《SpringBoot开发中十大常见陷阱深度解析与避坑指南》在SpringBoot的开发过程中,即使是经验丰富的开发者也难免会遇到各种棘手的问题,本文将针对SpringBoot开发中十大常见的“坑... 目录引言一、配置总出错?是不是同时用了.properties和.yml?二、换个位置配置就失效?搞清楚加

Python中对FFmpeg封装开发库FFmpy详解

《Python中对FFmpeg封装开发库FFmpy详解》:本文主要介绍Python中对FFmpeg封装开发库FFmpy,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、FFmpy简介与安装1.1 FFmpy概述1.2 安装方法二、FFmpy核心类与方法2.1 FF

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

Windows下C++使用SQLitede的操作过程

《Windows下C++使用SQLitede的操作过程》本文介绍了Windows下C++使用SQLite的安装配置、CppSQLite库封装优势、核心功能(如数据库连接、事务管理)、跨平台支持及性能优... 目录Windows下C++使用SQLite1、安装2、代码示例CppSQLite:C++轻松操作SQ

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

Windows的CMD窗口如何查看并杀死nginx进程

《Windows的CMD窗口如何查看并杀死nginx进程》:本文主要介绍Windows的CMD窗口如何查看并杀死nginx进程问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows的CMD窗口查看并杀死nginx进程开启nginx查看nginx进程停止nginx服务

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件