C# 在WPF页面上显示图像

C# 在WPF页面上显示图像,c#,wpf,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" He

我试图在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设计器中,但当我运行程序时,图像不会显示在页面上


请注意,图像显示在页面而不是窗口上

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分为以下几个部分:

  • 权限:
    应用程序://
路径:编译到引用程序集中的资源文件的名称。路径必须符合以下格式:AssemblyShortName[;Version][;PublicKey];组件/路径

  • AssemblyShortName:引用程序集的短名称
  • );版本[可选]:所引用程序集的版本 包含资源文件。当引用两个或多个时使用此选项 将加载具有相同短名称的程序集
  • );PublicKey[可选]:用于签名的公钥 引用的程序集。当引用两个或多个时使用此选项 将加载具有相同短名称的程序集
  • );component:指定引用的程序集为 从本地程序集引用
  • /路径:资源文件的名称,包括其路径,相对于 引用程序集的项目文件夹的根
应用程序:后的三个斜杠必须替换为逗号:

注意:包URI的授权组件是一个嵌入式URI 指向一个包,并且必须符合RFC 2396。此外 “/”字符必须替换为“、”字符和保留字符 必须对“%”和“?”等字符进行转义。有关详细信息,请参见OPC 细节


当然,请确保将映像上的构建操作设置为Resource。

另一个选项是使用资源,例如在应用程序中。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}" />


我自己对此感到失望,我刚刚发现页面使用了图像的相对位置。在我的例子中,图像位于文件夹“Graphics/logo.jpg”中,页面位于文件夹“View/Setting/About”中。我已将图像源更新为
。/../Graphics/logo.jpg
,并成功运行。

您的图像是上载到您的网站,还是仅上载到您正在设计它的计算机上?在我的计算机上。该应用程序是桌面应用程序该图像实际上是项目的一部分(列在解决方案资源管理器中)?是否为项目中的signature.png文件指定了“复制到输出目录”?是的,仍然不起作用