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

ie3xauqp  于 2023-01-10  发布在  .NET
关注(0)|答案(2)|浏览(104)

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

global::Wrigley_Data_Mart_Manager_2.Properties.Resources.previous_16x16;

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

esyap4oy

esyap4oy1#

如果您不想使用资源(resx),则可以始终将图像文件作为嵌入式资源包含在项目中。
您可以创建一个文件夹来保存图像,然后调用“添加现有文件”,添加要嵌入到项目中的图像。然后在每个文件的“属性”窗口中,对于**“生成操作”选项,突出显示“嵌入资源”选项。
要访问该文件,需要使用项目的完整名称空间+项目中的文件夹路径来调用Assembly.GetManifestResourceStream(string)
例如,对于项目名称:
“我的公司.我的测试项目”,并将图像存储在“图像”文件夹中,作为“图像/图像1.gif”**,
名称空间将为:

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

fivyi3re2#

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

相关问题