2012-09-27 51 views
1

我正在创建windows mobile 6.5应用程序。在那个应用程序中,我必须使用相机操作,如图片和视频。 有一种形式,其中包含两个按钮一个用于图片和其他视频。如果用户点击图片按钮,则相机启动并点击图片并将图片保存在指定位置。同样的步骤是,视频应用如何在windows mobile 6应用程序中使用相机

捕捉任何帮助,提前感谢

感谢

回答

0

退房的SHCameraCapture功能。它可以完全按照您的指定进行:使用内置的Camera应用程序将视频或图像文件保存到用户定义的位置。这只需要一些时间就可以让你的应用程序使用这个API。

3

最简单的方法是在Microsoft.WindowsMobile.Forms.dll上使用CameraCaptureDialog class,该方法独立于硬件。看到这个例子:

using System.ComponentModel; 
using System.IO; 
using System.Windows.Forms; 
using Microsoft.WindowsMobile.Forms; 

namespace CameraExample 
{ 

    public class Form1 : Form 
    { 
     #region Code Designer.cs 
     /// <summary> 
     /// Required designer variable. 
     /// </summary> 
     private IContainer components; 

     /// <summary> 
     /// Clean up any resources being used. 
     /// </summary> 
     /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> 
     protected override void Dispose(bool disposing) 
     { 
      if (disposing && (components != null)) 
      { 
       components.Dispose(); 
      } 
      base.Dispose(disposing); 
     } 

     #region Windows Form Designer generated code 

     /// <summary> 
     /// Required method for Designer support - do not modify 
     /// the contents of this method with the code editor. 
     /// </summary> 
     private void InitializeComponent() 
     { 
      this.btnPhoto = new System.Windows.Forms.Button(); 
      this.btnVideo = new System.Windows.Forms.Button(); 
      this.sfdFile = new System.Windows.Forms.SaveFileDialog(); 
      this.SuspendLayout(); 
      // 
      // btnPhoto 
      // 
      this.btnPhoto.Location = new System.Drawing.Point(3, 3); 
      this.btnPhoto.Name = "btnPhoto"; 
      this.btnPhoto.Size = new System.Drawing.Size(72, 20); 
      this.btnPhoto.TabIndex = 0; 
      this.btnPhoto.Text = "Photo"; 
      this.btnPhoto.Click += new System.EventHandler(this.btnPhoto_Click); 
      // 
      // btnVideo 
      // 
      this.btnVideo.Location = new System.Drawing.Point(81, 3); 
      this.btnVideo.Name = "btnVideo"; 
      this.btnVideo.Size = new System.Drawing.Size(72, 20); 
      this.btnVideo.TabIndex = 1; 
      this.btnVideo.Text = "Video"; 
      this.btnVideo.Click += new System.EventHandler(this.btnVideo_Click); 
      // 
      // Form1 
      // 
      this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); 
      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; 
      this.AutoScroll = true; 
      this.ClientSize = new System.Drawing.Size(240, 294); 
      this.Controls.Add(this.btnVideo); 
      this.Controls.Add(this.btnPhoto); 
      this.MinimizeBox = false; 
      this.Name = "Form1"; 
      this.Text = "Form1"; 
      this.ResumeLayout(false); 

     } 

     #endregion 

     private Button btnPhoto; 
     private SaveFileDialog sfdFile; 
     private Button btnVideo; 

     #endregion 

     public Form1() 
     { 
      InitializeComponent(); 
     } 

     enum CameraType 
     { 
      Photo, 
      Video 
     } 

     private void btnPhoto_Click(object sender, System.EventArgs e) 
     { 
      sfdFile.FileName = "photo.jpg"; 
      sfdFile.Filter = "Image Files |*.jpg"; 
      if (sfdFile.ShowDialog() == DialogResult.OK) 
       ShowCamera(sfdFile.FileName, CameraType.Photo); 
     } 

     private void btnVideo_Click(object sender, System.EventArgs e) 
     { 
      sfdFile.FileName = "video.wmv"; 
      sfdFile.Filter = "Video Files |*.wmv"; 
      if (sfdFile.ShowDialog() == DialogResult.OK) 
       ShowCamera(sfdFile.FileName, CameraType.Video); 
     } 

     private void ShowCamera(string FileName, CameraType typeOfCamera) 
     { 
      FileInfo fi = new FileInfo(FileName); 
      CameraCaptureDialog camera = new CameraCaptureDialog 
      { 
       InitialDirectory = fi.DirectoryName, 
       DefaultFileName = fi.Name, 
       Mode = typeOfCamera == CameraType.Photo ? CameraCaptureMode.Still : CameraCaptureMode.VideoWithAudio, 
       VideoTypes = CameraCaptureVideoTypes.All, 
       Title = "Using the camera" 
      }; 

      if (camera.ShowDialog() == DialogResult.OK) 
       MessageBox.Show((typeOfCamera == CameraType.Photo ? "Photo " : "Video ") + FileName + " Captured"); 
      else 
       MessageBox.Show("Not Captured"); 
     } 
    } 
} 
相关问题