我已将一些.jpg文件加载到Visual Studio 2015下的类库项目中,并将它们设置为作为资源生成并在新建时进行复制。当我将其与WPF项目一起使用时,它似乎可以正常工作。还有另一种将图像存储到DLL中的方法吗?
=====================================
更新3/22/2016 5:02 pm
为了清楚起见,我将ImageSource语句作为Application.Resources部分添加到App.xaml文件中,如下所示:
<ImageSource x:Key="OkImage">pack://application:,,,/MyStyles;component/ok.png</ImageSource>
然后,我在WPF窗口xaml中引用OkImage关键字,如下所示,用于图像控件:
<Image x:Name="image" Source="{DynamicResource OkImage}"
Grid.Column="1" HorizontalAlignment="Left" Height="100" Margin="66,25,0,0" Grid.Row="2" VerticalAlignment="Top" Width="100"/>
这就是我将图像从.DLL提取到WPF文件中的方式。带有图像的.DLL的目的是与其他人共享它,以便在当前和将来的项目中在控件上使用相同的图像。
是类库是用于将图像存储为WPF项目要使用的资源的正确项目吗?
绝对地!WPF将此称为资源文件-标记为“资源的生成操作”的文件。然后将这些资源编译到程序集中,在其中可以从c#代码或通过Pack URI通过XAML加载它们。这就是WPF应用程序不应使用WinForms样式.resx文件的原因,因为XAML通常无法利用它们。
MSDN:
如果应用程序数据文件必须始终可供应用程序使用,则保证可用性的唯一方法是将其编译为应用程序的主要可执行程序集或其引用的程序集之一。这种类型的应用程序数据文件称为资源文件。-告诉我更多
在:
我已将一些.jpg文件加载到Visual Studio 2015下的类库项目中,并将它们设置为作为资源构建,并在新建时进行复制
在将文件标记为“资源不”时,请勿将其标记为“新时复制”。这就破坏了资源文件的目的。您只是在复制一个很可能未被使用的其他图像文件。资源文件应嵌入到程序集中。
在:
还有另一种将图像存储到DLL中的方法吗?
您还可以使用内容文件。当事后很可能会更改文件,但又不想重新编译应用程序时,此技术很有用。您的应用程序具有指向其在运行时评估的依存资源的链接。告诉我更多有关内容文件的信息
原始文件的站点我必须承认,刚刚阅读它后我对此并不了解。当在构建时不知道资源时,它似乎很有用;对于访问受限的部分信任应用程序很有用。完全信任的应用程序可能会发现SoOF语法比file://
通常需要完整路径的SoOF语法更有用。
MSDN对SoOF说:
...有时您可能想在程序集和应用程序数据文件之间建立隐式或不存在的关系,包括以下情况:
- 编译时文件不存在。
- 您直到运行时才知道程序集需要什么文件。
- 您希望能够在不重新编译与之关联的程序集的情况下更新文件。
- 您的应用程序使用大数据文件,例如音频和视频,并且您只希望用户选择下载它们。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句