ResourceManager.GetStream 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
從指定的資源傳回 Unmanaged 記憶體資料流物件。
多載
GetStream(String) |
從指定的資源傳回 Unmanaged 記憶體資料流物件。 |
GetStream(String, CultureInfo) |
使用指定的文化特性,從指定的資源傳回 Unmanaged 記憶體資料流物件。 |
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
資源的名稱。
傳回
表示資源的 Unmanaged 記憶體資料流物件。
- 屬性
例外狀況
指定之資源的值不是 MemoryStream 物件。
name
null
。
找不到一組可用資源,而且沒有預設資源。 如需如何處理此例外狀況的詳細資訊,請參閱
預設文化特性的資源位於找不到的附屬元件中。 如需如何處理此例外狀況的詳細資訊,請參閱
範例
下列範例會使用 GetStream(String) 方法來擷取應用程式開啟啟動顯示視窗中所使用的點陣圖。 下列名為 CreateResources.cs 的檔案原始程式碼(適用於 C#)或 CreateResources.vb (適用於 Visual Basic)會產生名為 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 (for 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 規範。
使用指定的文化特性,從指定的資源傳回 Unmanaged 記憶體資料流物件。
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
要用於資源查閱的文化特性。 如果 culture
是 null
,則會使用目前線程的文化特性。
傳回
表示資源的 Unmanaged 記憶體資料流物件。
- 屬性
例外狀況
指定之資源的值不是 MemoryStream 物件。
name
null
。
找不到一組可用資源,而且沒有預設資源。 如需如何處理此例外狀況的詳細資訊,請參閱
預設文化特性的資源位於找不到的附屬元件中。 如需如何處理此例外狀況的詳細資訊,請參閱
備註
GetStream 方法會採用儲存為 MemoryStream 對象的資源名稱、取得 Object 資源的值,並傳回 UnmanagedMemoryStream 物件。 它需要您直接使用位元組數據流,然後轉換成物件。 此方法主要用於效能考慮:將資源擷取為位元組數據流,而不是明確物件可以改善效能。
傳回的資源會針對 culture
所指定的文化特性進行當地語系化,如果 culture
為 null
,則為 CultureInfo.CurrentUICulture 屬性所指定的文化特性。 如果資源未針對該文化特性進行當地語系化,資源管理員會使用後援規則來載入適當的資源。 如果找不到一組可使用的當地語系化資源,ResourceManager 會回復預設文化特性的資源。 如果找不到預設文化特性的資源集,此方法會擲回 MissingManifestResourceException 例外狀況,或者,如果資源集預期位於附屬元件中,則為 MissingSatelliteAssemblyException 例外狀況。 如果資源管理員可以載入適當的資源集,但找不到名為 name
的資源,此方法會傳回 null
。
IgnoreCase 屬性會判斷 name
與資源名稱的比較是否不區分大小寫(預設值)或區分大小寫。