2011-06-20 12 views
2

私は一束の画像を表示するフォームを持っています。私はこのイメージをペイントのような別の実行ファイルで変更し、終了時にイメージをリフレッシュすることができるようにしたいと考えています。WPFのImageタグから画像を変更する

イメージをペイントに保存しようとすると、イメージが何らかの形でイメージにリンクされているためにイメージが保護されていることがわかります。

この作業を行う方法はありますか?どのように問題を回避するための任意のアイデア?

ありがとうございました。

編集:画像を監視するための

MemoryStream ms = new MemoryStream(); 
BitmapImage bi = new BitmapImage(); 

byte[] bytArray = File.ReadAllBytes(@"test.jpg"); 
ms.Write(bytArray, 0, bytArray.Length); 
ms.Position = 0; 
bi.BeginInit(); 
bi.StreamSource = ms; 
bi.EndInit(); 
image.Source = bi; 

:ここstrucure(heaviliy単純化された)、私はあなたがファイルを読み込み、MemoryStreamオブジェクトに書き換えることができます

 <ListView Style="{StaticResource BaseListView}" x:Name="LstMoulures" Grid.Column="0" Background="#00000000" SelectionMode="Single" IsTextSearchEnabled="False" ScrollViewer.VerticalScrollBarVisibility="Auto"> 
      <ListView.ItemTemplate> 
       <DataTemplate> 
        <Border BorderBrush="White" Margin="1,1,1,1" BorderThickness="2,2,2,2" CornerRadius="4"> 
         <StackPanel Orientation="Horizontal" Margin="5,0,0,5" Height="200"> 
          <Image x:Name="ImgPicture" Width="220" Height="195" Margin="2,5,2,2" GotFocus="ImgPicture_GotFocus" MouseLeftButtonDown="ImgPicture_MouseLeftButtonDown" MouseEnter="ImgPicture_MouseEnter" MouseLeave="ImgPicture_MouseLeave"> 
           <Image.Source> 
            <BitmapImage UriSource="{Binding DessinSource}" CacheOption="OnLoad" /> 
           </Image.Source> 
          </Image> 
         </StackPanel> 
        </Border> 
       </DataTemplate> 
      </ListView.ItemTemplate> 
     </ListView> 
また

答えて

0
<Image> 
    <Image.Source> 
     <BitmapImage UriSource="test.jpg" CacheOption="OnLoad" /> 
    </Image.Source> 
</Image> 

使用ですあなたが使うことができる画像を変更してリフレッシュするFileSystemWatcher

+0

@navid:何ですか'CacheOption'の意味ですか?あなたの答えは実際には主な質問に答えません – Sung

+0

look [here](http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.bitmapcacheoption.aspx) –

+0

あなたが 'CacheOption = "OnLoad" 'イメージデータのすべての要求はメモリストアから満たされます。 –

関連する問題