现在,我开发了一个winfroms应用程序。我需要创建一个自定义控件。我的自定义控件使用图片。我不想将这些图片存储在项目资源文件中。
global::Wrigley_Data_Mart_Manager_2.Properties.Resources.previous_16x16;
我想将图片存储在自定义控件的资源文件中。但它非常不舒服。 (设计师总是从那里删除图片)。我可以在哪里存储自定义控件的图像?我想我的自定义控件是自给自足的,并且可以在其他项目中使用。
答案 0 :(得分:2)
如果您不想使用资源(resx),那么您始终可以将图像文件作为嵌入资源包含在项目中。
您可以创建一个文件夹来保存图像,并调用&#34;添加现有&#34;,添加您想要嵌入到项目中的图像。然后在每个文件的“属性”窗口中,对于&#34;构建操作&#34; 选项,突出显示&#34;嵌入式资源&#34; 选项。< / p>
要访问该文件,您可以使用项目的完整命名空间+项目中的文件夹路径调用Assembly.GetManifestResourceStream(string)
:
例如,使用项目名称:&#34; MyCompany.MyTestProject&#34; ,然后将图像存储在&#34; Images&#34; 文件夹为&#34; Images / image1.gif&#34; ,
然后命名空间为:
Assembly.GetManifestResourceStream("MyCompany.MyTestProject.Images.image1.gif")
答案 1 :(得分:1)
另一种方法是将它们转换为字节数组并将它们作为BLOB存储在数据库中。
public byte[] imageToByteArray(System.Drawing.Image imageIn)
{
MemoryStream ms = new MemoryStream();
imageIn.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);
return ms.ToArray();
}
然后将它们转换回来:
public Image byteArrayToImage(byte[] byteArrayIn)
{
MemoryStream ms = new MemoryStream(byteArrayIn);
Image returnImage = Image.FromStream(ms);
return returnImage;
}