2014-03-31 63 views
0

現在,我正在開發一個winfroms應用程序。我需要創建一個自定義控件。我的自定義控件使用圖片。我不想將這些圖片存儲在項目資源文件中。我可以在哪裏存儲自定義控件的圖像?

global::Wrigley_Data_Mart_Manager_2.Properties.Resources.previous_16x16; 

我想將圖片存儲在自定義控件的資源文件中。但是非常不舒服。 (設計師總是從那裏刪除圖片)。我可以在哪裏存儲自定義控件的圖像?我想我的自定義控件是自給自足的,它可以用於其他項目。

+0

你想如何重用控件?如果你打算從項目的dll中使用它,它是否真的無論是否存儲在項目資源或沒有,只要它是在同一個項目的控制是... – derape

+0

例如,我創建了一個ExpandPanel(使用2個按鈕圖像)控件,我想在每個項目中使用它。 (簡單的格格並從表單上的工具箱中刪除) – isxaker

回答

2

如果你不想使用資源(RESX),那麼你總是可以包括項目作爲嵌入資源中的圖像文件。

您將創建一個文件夾來保存圖像,並調用「添加現有」,將您想要嵌入的圖像添加到項目中。然後在屬性窗口中爲每個文件選擇「Build Action」選項,突出顯示「Embedded Resource」選項。

要訪問該文件,你會打電話Assembly.GetManifestResourceStream(string)與項目的完整的命名空間+項目內的文件夾路徑:

例如,對於項目名稱:「MyCompany.MyTestProject」和您存儲在「影像」文件夾作爲「圖像/ image1.gif」圖像(多個),

命名空間將被:

Assembly.GetManifestResourceStream("MyCompany.MyTestProject.Images.image1.gif") 
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; 
} 
相關問題