我可以在哪里存储自定义控件的图像



现在,我开发了一个WinForms应用程序。我需要创建自定义控件。我的自定义控件使用图片。我不想将这些图片存储在项目资源文件中。

global::Wrigley_Data_Mart_Manager_2.Properties.Resources.previous_16x16;

我想将图片存储在自定义控件的资源文件中。但这很不舒服。(设计师总是从那里删除图片)。在哪里可以存储自定义控件的图像?我希望我的自定义控件是自给自足的,并且可以在其他项目中使用。

如果您不想使用资源 (resx),则始终可以将图像文件作为嵌入资源包含在项目中。

您将创建一个文件夹来保存图像,并调用"添加现有",将要嵌入的图像添加到项目中。 然后在每个文件的"属性"窗口中,对于"生成操作"选项,突出显示"嵌入的资源"选项。

若要访问该文件,可以使用项目的完整命名空间 + 项目中的文件夹路径调用 Assembly.GetManifestResourceStream(string)

例如,使用项目名称:"MyCompany.MyTestProject",您将图像存储在"图像"文件夹中为"图像/图像1.gif"

然后,命名空间将为:

Assembly.GetManifestResourceStream("MyCompany.MyTestProject.Images.image1.gif")

另一种方法是将它们转换为字节数组并将它们作为 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;
}

最新更新