修改WPF中image标记中的图像

本文关键字:图像 image WPF 修改 | 更新日期: 2023-09-27 17:59:49

我有一个表单,在其中我显示了一堆图像。我希望能够通过另一个可执行文件(如paint)修改此图像,并在退出时刷新图像(例如通过按钮)。

当我试图在绘画中保存图像时,它会告诉图像受到保护,这是由于表单以某种方式与图像链接。

有什么办法让它发挥作用吗?知道如何绕过这个问题吗?

谢谢。

编辑:这是结构(重量简化)我使用

        <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>

修改WPF中image标记中的图像

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

您还可以读取文件并将其重写为MemoryStream对象:

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;

为了监视图像更改和刷新图像,您可以使用FileSystemWatcher