更改后面代码中的图像源 - Wpf

问题描述 投票:0回答:6

我需要动态设置图像源,请注意我的图像位于网络上的某个位置,这是我的代码

BitmapImage logo = new BitmapImage();
logo.BeginInit();
logo.UriSource = new Uri(@"pack://application:,,,\\myserver\\folder1\\Customer Data\\sample.png");
logo.EndInit(); // Getting the exception here
ImageViewer1.Source = logo;

例外:

无法识别 URI 前缀

c# wpf imagesource
6个回答
81
投票

以上解决方案都不适合我。但这做到了:

myImage.Source = new BitmapImage(new Uri(@"/Images/foo.png", UriKind.Relative));

77
投票

您只需要一行:

ImageViewer1.Source = new BitmapImage(new Uri(@"\myserver\folder1\Customer Data\sample.png"));

5
投票

您在此处使用的包语法适用于作为应用程序中的资源包含的图像,而不是文件系统中的松散文件。

您只需将实际路径传递给 UriSource:

logo.UriSource = new Uri(@"\\myserver\folder1\Customer Data\sample.png");

4
投票

这些方法都不适合我,因为我需要从文件夹中提取图像而不是将其添加到应用程序中。 下面的代码有效:

TestImage.Source = GetImage("/Content/Images/test.png")

private static BitmapImage GetImage(string imageUri)
{
    var bitmapImage = new BitmapImage();
    
    bitmapImage.BeginInit();
    bitmapImage.UriSource = new Uri("pack://siteoforigin:,,,/" + imageUri,             UriKind.RelativeOrAbsolute);
    bitmapImage.EndInit();
    
    return bitmapImage;
} 

0
投票

我的 NET 7 项目文件如下所示。

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net7.0-windows</TargetFramework>
    <Nullable>enable</Nullable>
    <UseWPF>true</UseWPF>
  </PropertyGroup>

  <ItemGroup>
    <None Remove="images\RuntimePicture.png" />
  </ItemGroup>

  <ItemGroup>
    <Resource Include="images\RuntimePicture.png">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Resource>
  </ItemGroup>


</Project>

正如 proj 文件所示,我在名为 images 的文件夹中有一个图像。 ctor 背后的代码如下所示。

public MainWindow()
{
    InitializeComponent();
    ImageEx.Source = new BitmapImage(new Uri(@"/images/RuntimePicture.png", UriKind.Relative));

}

图像的主窗口xaml如下。

<Image x:Name="ImageEx" Height="300" Width="500" />

最后右键单击 png 文件并在属性中,确保 Build Action 设置为 Resource


-4
投票

你们都错了! 为什么?因为您只需要这段代码即可工作:

(图像视图)/ C# Img 是:你的图像框

保持原样,不做任何更改(“ms-appx:///)这是代码而不是您的应用程序名称 图像是您项目中的文件夹,您可以更改它。 dog.png 是您文件夹中的文件,以及我的文件夹“Images”和文件“dog.png” 所以 uri 是:“ms-appx:///Images/dog.png” 和我的代码:


private void Button_Click(object sender, RoutedEventArgs e)
    {
         img.Source = new BitmapImage(new Uri("ms-appx:///Images/dog.png"));
    }
© www.soinside.com 2019 - 2024. All rights reserved.