#wp7dev_jp

Picture ハブから写真を選択する PhotoChooserTask。これ結構便利です。

まずはサンプルコード。新しいプロジェクトでこのコードを足すだけです。

// コンストラクター
public MainPage()
{
    InitializeComponent();
    this.Loaded += new RoutedEventHandler(MainPage_Loaded);
}
void MainPage_Loaded(object sender, RoutedEventArgs e)
{
    PhotoChooserTask task = new PhotoChooserTask();
    task.ShowCamera = true; //①カメラボタンの表示
    task.PixelWidth = 456; //②トリミング幅
    task.PixelHeight = 456; //②トリミング高さ
    task.Completed += 
        new EventHandler<PhotoResult>(task_Completed);
    task.Show();
}
void task_Completed(object sender, PhotoResult e)
{
    //取得後の処理
    BitmapImage bmp = new BitmapImage();
    bmp.SetSource(e.ChosenPhoto);
    Image img = new Image();
    img.Source = bmp;
    ContentPanel.Children.Add(img);
}

カメラボタンを表示させる

PhotoChooserTask で ShowCamera プロパティ を True にすると Picture ハブでの選択画面でカメラボタンが追加されます。

撮影して画像を使う場合は、CameraCaptureTask に比べて(この画面でボタンを押す)1手間かかりますが、それでも便利。写真を選ぶか、写真を撮るか、まずこれを表示してから選ぶことができます。更に、写真を撮ってからは PhotoChooserTask処理になるので実装が1つで済みます

image

ユーザーに写真を選んでもらう際に、カメラボタンと、画像選択ボタンの2つを表示して ApplicationBarにボタンが4つしか置けないことを嘆いたこともあると思いますが、これでだいぶ楽になりますね。

 

トリミング機能をつける

撮影した後に、所定のサイズに変更するトリミング処理。実はこのPhotoChooserの中に含まれています。

PhotoChooserTask の Width/Height オプションを設定すると、トリミング処理が起動します。画面上の切り取り範囲の移動だけでなく、拡大縮小まで行うことができます。

image

わざわざトリミング機能を実装してた人もいるかもしれませんが、こんなに簡単にトリミングができるんです。

 

結果

上記の処理だけで、写真を選んでトリミングをして、画面に表示する処理が実装できます。

image

もし、使っていなかった方はぜひ試してみてください。