#wpdev_jp

Windows Phone アプリケーション トライアスロン 2013の第2種目のテーマの一つ、生カメラ。カメラの映像をそのまま画面に表示する方法ですが、これは画面上に面を持つものであればほとんどの対象に映し出すことができます。

処理成手順

手順はこんな感じ。

  1. 生カメラ(PhotoCamera)を作る
  2. 1のPhotoCameraをもとにビデオブラシを作る
  3. 生カメラの映像を表示するオブジェクトを作成する(XAML側であらかじめ作っておいてもOK)
  4. 3のオブジェクトのFillやBackgroundに2のビデオブラシを適応する。
  5. 3のオブジェクトを画面に表示(追加)XAMLで定義している場合は不要。

図で書くとこんな感じですね。 

図1

サンプルコード

空のプロジェクトを作ったら MainPage.xaml.cs の コンストラクターに1行追加して、さらに、関数を追加してください。

// コンストラクター
public MainPage()
{
    InitializeComponent();
    this.Loaded += MainPage_Loaded;
}

void MainPage_Loaded(object sender, RoutedEventArgs e)
{
    //PhotoCameraを作る
    PhotoCamera cam = new PhotoCamera();

    //PhotoCameraのからVideoブラシを作る
    VideoBrush videobrush = new VideoBrush();
    videobrush.SetSource(new PhotoCamera());
            
    //塗りつぶす対象のオブジェクトのFillやBackgroundをVideoブラシを適応する
    Ellipse mag = new Ellipse()
    {
        Width = 400,
        Height = 400,
        VerticalAlignment = System.Windows.VerticalAlignment.Center,
        HorizontalAlignment = System.Windows.HorizontalAlignment.Center,
        Stroke = new SolidColorBrush(Colors.Gray)
    };
    mag.Fill = videobrush;

    //オブジェクトを画面に表示
    ContentPanel.Children.Add(mag);
}

実行画面

出来上がるとこんな感じ . エミュレーターでのテストです。

image

撮影には、この PhotoCamera オブジェクトの機能を使うので、PhotoCameraはもう少し上位で定義しておいた方がいいですね。