2012-05-09 22 views
3

カスタム画像ボックスにスクロールビューワと画像が含まれています。 依存するプロパティ文字列型のイメージがイメージの設定に使用されます。カスタム画像ボックスで画像が更新されない

public static DependencyProperty ImageProperty = DependencyProperty.Register(
"Image", typeof(string), typeof(CustomPictureBox), new FrameworkPropertyMetadata("", new PropertyChangedCallback(OnImageChanged))); 


private static void OnImageChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) 
{ 
    CustomPictureBox cpb = (CustomPictureBox)d; 
    if (e.Property == ImageProperty) 
    { 
    string newvalue = e.NewValue as string; 
    if (!(string.IsNullOrEmpty(newvalue))) 
    { 
     var bmp = new BitmapImage(); 
     bmp.BeginInit(); 
     bmp.UriSource = new Uri(newvalue); 
     bmp.CacheOption = BitmapCacheOption.OnLoad; 
     bmp.EndInit(); 

     cpb.imgPicture.Source = bmp; 
    } 
    else 
     cpb.imgPicture.Source = null; 
    } 
} 

イメージはフレームグラバーを介して取得され、「camera_image.tif」という名前の所定の場所に格納されます。 Imageプロパティはこのファイル名に設定されています。 新しい画像取得を開始すると、バインディングを介してImageプロパティがnullに設定され、画像ボックスが更新されて画像が表示されません。 画像が取得されると、再び「camera_image.tif」に設定されます。問題は、新しい画像が決して現れないことです。代わりに、常に画像ボックス内に表示される最初に取得された画像です。イメージファイルをチェックすると、新しいコンテンツが含まれます。

画像を更新するために画像ボックスを取得するにはどうすればよいですか?

よろしく、

tabina私はここで答えを見つけ

+0

CacheOptionを削除しましたか?その行全体を取り除く。 'bmp.CacheOption = BitmapCacheOption.OnLoad;' –

+0

これを実行した場合、結果はファイル "camera_image.tif"に書き込めないので、2回目の画像取得は失敗します。 – tabina

+0

私は、ユーザーが1.)画像を取得することができるようにしたい、2.)彼にそれを表示することでOKかどうかをチェックする、3.)OKならば、別のファイルの場所に保存する。 OK:もう一度やり直して別のイメージを取得してください... – tabina

答えて

関連する問題