ResourceManager.GetStream 方法

定義

從指定的資源傳回 Unmanaged 記憶體資料流物件。

多載

GetStream(String)

從指定的資源傳回 Unmanaged 記憶體資料流物件。

GetStream(String, CultureInfo)

使用指定的文化特性,從指定的資源傳回 Unmanged 記憶體資料流物件。

GetStream(String)

重要

此 API 不符合 CLS 規範。

從指定的資源傳回 Unmanaged 記憶體資料流物件。

public:
 System::IO::UnmanagedMemoryStream ^ GetStream(System::String ^ name);
public System.IO.UnmanagedMemoryStream? GetStream (string name);
public System.IO.UnmanagedMemoryStream GetStream (string name);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
public System.IO.UnmanagedMemoryStream GetStream (string name);
[System.Runtime.InteropServices.ComVisible(false)]
public System.IO.UnmanagedMemoryStream GetStream (string name);
member this.GetStream : string -> System.IO.UnmanagedMemoryStream
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
member this.GetStream : string -> System.IO.UnmanagedMemoryStream
[<System.Runtime.InteropServices.ComVisible(false)>]
member this.GetStream : string -> System.IO.UnmanagedMemoryStream
Public Function GetStream (name As String) As UnmanagedMemoryStream

參數

name
String

資源的名稱。

傳回

UnmanagedMemoryStream

代表資源的 Unmanaged 記憶體資料流物件。

屬性

例外狀況

指定之資源的值不是 MemoryStream 物件。

namenull

找不到一組可用的資源,也沒有預設資源。 如需如何處理這個例外狀況的詳細資訊,請參閱 ResourceManager 類別主題中的<處理 MissingManifestResourceException 和 MissingSatelliteAssemblyException 例外狀況>一節。

預設文化特性的資源位於找不到的附屬組件中。 如需如何處理這個例外狀況的詳細資訊,請參閱 ResourceManager 類別主題中的<處理 MissingManifestResourceException 和 MissingSatelliteAssemblyException 例外狀況>一節。

範例

下列範例使用 GetStream(String) 方法來擷取應用程式開頭顯示畫面視窗中使用的點陣圖。 下列原始程式碼來自名為 CreateResources.cs 的檔案, (適用于 C#) 或適用于 Visual Basic) 的 CreateResources.vb (會產生名為 AppResources.resx 的 .resx 檔案,其中包含序列化映射。 在此情況下,會從名為 SplashScreen.jpg 的檔案載入影像;您可以修改檔案名稱以替代成您自己的影像。

using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Resources;

public class Example
{
   public static void Main()
   {
      Bitmap bmp = new Bitmap(@".\SplashScreen.jpg");
      MemoryStream imageStream = new MemoryStream();
      bmp.Save(imageStream, ImageFormat.Jpeg);

      ResXResourceWriter writer = new ResXResourceWriter("AppResources.resx");
      writer.AddResource("SplashScreen", imageStream);
      writer.Generate();
      writer.Close();
   }
}
Imports System.Drawing
Imports System.Drawing.Imaging
Imports System.IO
Imports System.Resources

Module Example
   Public Sub Main()
      Dim bmp As New Bitmap(".\SplashScreen.jpg")
      Dim imageStream As New MemoryStream()
      bmp.Save(imageStream, ImageFormat.Jpeg)
      
      Dim writer As New ResXResourceWriter("AppResources.resx")
      writer.AddResource("SplashScreen", imageStream)
      writer.Generate()
      writer.Close()      
   End Sub
End Module

下列程式碼來自名為 GetStream.cs 的檔案, (適用于 C#) 或 GetStream.vb (,然後擷 Visual Basic) 取資源並在控制項中 System.Windows.Forms.PictureBox 顯示影像。

using System;
using System.Drawing;
using System.IO;
using System.Resources;
using System.Windows.Forms;

public class Example
{
   public static void Main()
   {
      ResourceManager rm = new ResourceManager("AppResources", typeof(Example).Assembly);
      Bitmap screen = (Bitmap) Image.FromStream(rm.GetStream("SplashScreen"));

      Form frm = new Form();
      frm.Size = new Size(300, 300);

      PictureBox pic = new PictureBox();
      pic.Bounds = frm.RestoreBounds;
      pic.BorderStyle = BorderStyle.Fixed3D;
      pic.Image = screen;
      pic.SizeMode = PictureBoxSizeMode.StretchImage;

      frm.Controls.Add(pic);
      pic.Anchor = AnchorStyles.Top | AnchorStyles.Bottom |
                   AnchorStyles.Left | AnchorStyles.Right;

      frm.ShowDialog();
   }
}
Imports System.Drawing
Imports System.IO
Imports System.Resources
Imports System.Windows.Forms

Module Example
   Public Sub Main()
      Dim rm As New ResourceManager("AppResources", GetType(Example).Assembly)
      Dim screen As Bitmap = CType(Image.FromStream(rm.GetStream("SplashScreen")), Bitmap)
      
      Dim frm As New Form()
      frm.Size = new Size(300, 300)

      Dim pic As New PictureBox()
      pic.Bounds = frm.RestoreBounds
      pic.BorderStyle = BorderStyle.Fixed3D 
      pic.Image = screen
      pic.SizeMode = PictureBoxSizeMode.StretchImage

      frm.Controls.Add(pic)
      pic.Anchor = AnchorStyles.Top Or AnchorStyles.Bottom Or
                   AnchorStyles.Left Or AnchorStyles.Right

      frm.ShowDialog()
   End Sub
End Module

您可以使用下列批次檔來建立 C# 範例。 若是 Visual Basic,請將 csc 變更為 vbc,並將原始程式碼檔案的副檔名從 .cs 變更為 .vb

csc CreateResources.cs
CreateResources

resgen AppResources.resx

csc GetStream.cs /resource:AppResources.resources

備註

方法 GetStream 會採用儲存為 MemoryStream 物件的資源名稱、取得資源的值 Object ,並傳回 UnmanagedMemoryStream 物件。 它要求您直接使用位元組資料流程,然後轉換成 物件。 此方法主要用於效能考慮:擷取資源做為位元組資料流程,而不是明確物件可以改善效能。

傳回的資源會針對目前線程的 UI 文化特性進行當地語系化,該文化特性是由 屬性所 CultureInfo.CurrentUICulture 定義。 如果資源未針對該文化特性當地語系化,資源管理員會使用後援規則來載入適當的資源。 如果找不到一組可用的當地語系化資源,則會 ResourceManager 回復預設文化特性的資源。 如果找不到預設文化特性的資源集,方法會 MissingManifestResourceException 擲回例外狀況,或者,如果資源集預期位於附屬元件中,則為 MissingSatelliteAssemblyException 例外狀況。 如果資源管理員可以載入適當的資源集,但找不到名為 name 的資源,此方法會傳 null 回 。

屬性 IgnoreCase 會決定與資源名稱的比較 name 是否不區分大小寫, (預設) 或區分大小寫。

適用於

GetStream(String, CultureInfo)

重要

此 API 不符合 CLS 規範。

使用指定的文化特性,從指定的資源傳回 Unmanged 記憶體資料流物件。

public:
 System::IO::UnmanagedMemoryStream ^ GetStream(System::String ^ name, System::Globalization::CultureInfo ^ culture);
public System.IO.UnmanagedMemoryStream? GetStream (string name, System.Globalization.CultureInfo? culture);
public System.IO.UnmanagedMemoryStream GetStream (string name, System.Globalization.CultureInfo culture);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
public System.IO.UnmanagedMemoryStream GetStream (string name, System.Globalization.CultureInfo culture);
[System.Runtime.InteropServices.ComVisible(false)]
public System.IO.UnmanagedMemoryStream GetStream (string name, System.Globalization.CultureInfo culture);
member this.GetStream : string * System.Globalization.CultureInfo -> System.IO.UnmanagedMemoryStream
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
member this.GetStream : string * System.Globalization.CultureInfo -> System.IO.UnmanagedMemoryStream
[<System.Runtime.InteropServices.ComVisible(false)>]
member this.GetStream : string * System.Globalization.CultureInfo -> System.IO.UnmanagedMemoryStream
Public Function GetStream (name As String, culture As CultureInfo) As UnmanagedMemoryStream

參數

name
String

資源的名稱。

culture
CultureInfo

要用於資源查閱的文化特性。 如果 culturenull,則會使用目前執行緒的文化特性。

傳回

UnmanagedMemoryStream

代表資源的 Unmanaged 記憶體資料流物件。

屬性

例外狀況

指定之資源的值不是 MemoryStream 物件。

namenull

找不到一組可用的資源,也沒有預設資源。 如需如何處理這個例外狀況的詳細資訊,請參閱 ResourceManager 類別主題中的<處理 MissingManifestResourceException 和 MissingSatelliteAssemblyException 例外狀況>一節。

預設文化特性的資源位於找不到的附屬組件中。 如需如何處理這個例外狀況的詳細資訊,請參閱 ResourceManager 類別主題中的<處理 MissingManifestResourceException 和 MissingSatelliteAssemblyException 例外狀況>一節。

備註

方法 GetStream 會採用儲存為 MemoryStream 物件的資源名稱、取得資源的值 Object ,並傳回 UnmanagedMemoryStream 物件。 它要求您直接使用位元組資料流程,然後轉換成 物件。 這個方法主要用於效能考慮:將資源擷取為位元組資料流程,而不是明確物件可以改善效能。

傳回的資源會針對 所 culture 指定的文化特性進行當地語系化,如果 culture null 為 ,則為 屬性所 CultureInfo.CurrentUICulture 指定的文化特性。 如果資源並未針對該文化特性進行當地語系化,資源管理員會使用後援規則來載入適當的資源。 如果找不到一組可用的當地語系化資源,則會 ResourceManager 回復預設文化特性的資源。 如果找不到預設文化特性的資源集,方法會擲回 MissingManifestResourceException 例外狀況,或者,如果資源集預期位於附屬元件中,則為 MissingSatelliteAssemblyException 例外狀況。 如果資源管理員可以載入適當的資源集,但找不到名為 name 的資源,則方法會傳 null 回 。

屬性 IgnoreCase 會判斷與資源名稱的比較 name 是否不區分大小寫, (預設) 或區分大小寫。

適用於