在WPF页面上显示图像

时间:2015-05-15 10:52:12

标签: c# wpf

我正在尝试在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

3 个答案:

答案 0 :(得分:2)

尝试使用 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 [可选]:引用程序集的版本 包含资源文件。当两个或多个引用时使用 加载具有相同短名称的程序集。
  • ; PublicKey [可选]:用于签名的公钥 引用程序集。当两个或多个引用时使用 加载具有相同短名称的程序集。
  • ; component:指定所引用的程序集 从本地程序集引用。
  • / Path:资源文件的名称,包括其路径,相对于 引用程序集的项目文件夹的根目录。

申请后的三个斜线:必须用逗号代替:

  

注意:pack URI的权限组件是嵌入式URI   指向一个包,必须符合RFC 2396.此外,   “/”字符必须替换为“,”字符并保留   “%”和“?”等字符必须逃脱。请参阅OPC   的信息。

当然,请确保将图像上的构建操作设置为资源。

答案 1 :(得分:2)

另一个选择是使用资源,例如在你的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}" />

答案 2 :(得分:0)

我自己感到很沮丧,我只是弄清楚该页面使用图像的相对位置。在我的情况下,图像位于&#34; Graphics / logo.jpg&#34;文件夹中,页面位于文件夹&#34;查看/设置/关于&#34;。我将图片的来源更新为../../Graphics/logo.jpg,但它确实有效。