在WPF页面上显示图像

本文关键字:显示 显示图 图像 WPF | 更新日期: 2023-09-27 17:49:18

我正在尝试在WPF页面上显示图像。代码如下所示:

<Grid>
  <TextBlock Margin="32,332,395,74" Cursor="None">
     Click to <Hyperlink NavigateUri="TestWindow.xaml">sign a document</Hyperlink>
  </TextBlock>
  <Image HorizontalAlignment="Left" Height="151" Margin="32,96,0,0" VerticalAlignment="Top" Width="179"
         Source="signature.png" Visibility="Visible" Name="signImage"/>

问题是图像显示在WPF设计器中,但当我运行程序时,图像不显示在页面上。

注意图片显示在PAGE而不是WINDOW

在WPF页面上显示图像

另一个选择是使用资源,例如在app.xaml:

 <Application.Resources>
    <BitmapImage x:Key="signatureSrc" UriSource="/MyProject;component/ImageFolderIfThereIsOne/signature.png" />
</Application.Resources>

并像这样使用

<Image Height="100" VerticalAlignment="Top" Width="100" Source="{StaticResource signatureSrc}" />

试试PackURIs

Image finalImage = new Image();
finalImage.Width = 80;
...
BitmapImage logo = new BitmapImage();
logo.BeginInit();
logo.UriSource = new Uri("pack://application:,,,/AssemblyName;component/Resources/logo.png");
logo.EndInit();
...
finalImage.Source = logo;

URI被分成几个部分:

  • 权限:application:///

路径:被编译成引用程序集的资源文件的名称。路径必须符合以下格式:AssemblyShortName[;Version][;PublicKey];component/path

  • AssemblyShortName:所引用程序集的短名称。
  • ;Version [optional]:被调用的程序集的版本包含资源文件。当两个或多个被引用时使用具有相同短名称的程序集被加载。
  • ;PublicKey [optional]:用于签名的公钥引用的组装。当两个或多个被引用时使用具有相同短名称的程序集被加载。
  • ;component:指定被引用的程序集是从本地程序集引用。
  • /Path:资源文件的名称,包括相对路径引用程序集的项目文件夹的根目录。

application:后面的三个斜杠必须用逗号代替:

注意:包URI的权限组件是一个嵌入的URI指向一个包,必须符合RFC 2396。此外,必须将"/"字符替换为","字符,并保留"%"answers"?"等字符必须转义。参见OPC细节。

当然,确保您将图像的构建操作设置为Resource.

我自己也很沮丧,我只是想出了这个页面使用了一个相对位置的图像。在我的例子中,图片在"Graphics/logo.jpg"文件夹中,页面在"View/Setting/About"文件夹中。我更新了图像的源到../../Graphics/logo.jpg,它工作了。