在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
另一个选择是使用资源,例如在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
,它工作了。