stackoverflow上有几篇帖子涵盖了这一点,但没有一个是原因。我已经尝试了几个来源,包括文档,我无法让它工作。 我正在关注Udemy的mosh教程,他正在展示如何使用嵌入式资源文件。 我正在使用Visual Studio 2017。 我在HelloWorld文件夹中添加了一个名为images的文件夹,并在其中放置了一个名为background.jpg的图像。
右键单击图像并将Build Action设置为EmbeddedReesource时,您应该获得资源ID。没有,甚至没有框出现。我认为这是一个被删除的新功能。
我发现资源路径是HelloWorld.images.background.jpg。
我的xaml是这样的:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="HelloWorld.ImagePage"
BackgroundColor="Black">
<ContentPage.Content>
<Image x:Name="image" Aspect="AspectFill" />
</ContentPage.Content>
</ContentPage>
接下来,我的c#代码是这样的:
public ImagePage ()
{
InitializeComponent ();
image.Source = ImageSource.FromResource("HelloWorld.images.background.jpg");
}
我已经尝试将图像放在Resources / Drawable下的android项目中,但这不能达到目的吗?
任何帮助都会很棒。提前谢谢。
答案 0 :(得分:-1)
仍然支持这种嵌入图像的方式。请查看有关如何操作的文档中的this page。这些是基本步骤:
EmbeddedResource
,您可以在文件属性中执行此操作如果您的图片不在文件夹中,您可以离开,如果它在多个文件夹中,则添加每个用点分隔的图像。一个例子可能如下所示:
var embeddedImage = new Image { Aspect = Aspect.AspectFit };
embeddedImage.Source = ImageSource.FromResource("WorkingWithImages.beach.jpg");
此处程序集(可能是您PCL的项目名称)名为“WorkingWithImages”,文件不在文件夹中,文件名为“beach.jpg”。对于Android,我认为您还应该注意,除了数字,字母和下划线之外,您不要使用连字符或任何其他字符。
话虽如此,你也说:
我已经尝试将图像放在android项目下 资源/可绘制,但这不是打败目的吗?
我不完全确定你在这里的意思,但我认为你认为它从一个代码库中击败了多平台应用程序的目的。我必须在那里不同意你的意见。虽然我看到你如何能够这样想,但使用图像是非常特定于平台的。所有平台都有一种非常不同的显示和缩放图像的方式,几乎不可能协调所有Xamarin。将图像放在PCL中就像现在一样,将完全禁用整个缩放机制,突然你负责使它在各种设备,分辨率和外形尺寸上都看起来很好。这就是为什么我总是拥有每个平台项目的图像资源。