Поделиться через


ResourceManager.GetStream Метод

Определение

Возвращает объект потока неуправляемой памяти из заданного ресурса.

Перегрузки

GetStream(String)

Возвращает объект потока неуправляемой памяти из заданного ресурса.

GetStream(String, CultureInfo)

Возвращает объект потока неуправляемой памяти из заданного ресурса, используя заданный язык и региональные параметры.

GetStream(String)

Исходный код:
ResourceManager.cs
Исходный код:
ResourceManager.cs
Исходный код:
ResourceManager.cs

Важно!

Этот API несовместим с CLS.

Возвращает объект потока неуправляемой памяти из заданного ресурса.

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

Имя ресурса.

Возвращаемое значение

Объект потока неуправляемой памяти, представляющий ресурс.

Атрибуты

Исключения

Значение указанного ресурса не является объектом MemoryStream.

name имеет значение null.

Не было найдено никаких возможных наборов ресурсов и отсутствуют ресурсы по умолчанию. Сведения об обработке этого исключения см. в подразделе "Обработка исключений MissingManifestResourceException и MissingSatelliteAssemblyException" раздела, посвященного классу ResourceManager.

Ресурсы языка и региональных параметров по умолчанию находятся во вспомогательной сборке, которую не удалось найти. Сведения об обработке этого исключения см. в подразделе "Обработка исключений MissingManifestResourceException и MissingSatelliteAssemblyException" раздела, посвященного классу ResourceManager.

Примеры

В следующем примере метод GetStream(String) используется для извлечения точечного рисунка, который используется на экране-заставке приложения. Следующий исходный код из файла с именем CreateResources.cs (для C#) или CreateResources.vb (для Visual Basic) создает RESX-файл с именем AppResources.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 объект . Для этого требуется работать непосредственно с потоком байтов, который затем преобразуется в объект . Этот метод полезен в первую очередь по соображениям производительности: получение ресурса в виде потока байтов вместо явного объекта может повысить производительность.

Возвращаемый ресурс локализуется для языка и региональных параметров пользовательского интерфейса текущего потока, который определяется свойством CultureInfo.CurrentUICulture . Если ресурс не локализован для этого языка и региональных параметров, диспетчер ресурсов использует резервные правила для загрузки соответствующего ресурса. Если доступный набор локализованных ресурсов не найден, ResourceManager возвращается к ресурсам языка и региональных параметров по умолчанию. Если набор ресурсов для языка и региональных параметров по умолчанию не найден, метод создает MissingManifestResourceException исключение или, если ожидается, что набор ресурсов будет находиться во вспомогательной сборке, исключение MissingSatelliteAssemblyException . Если диспетчер ресурсов может загрузить соответствующий набор ресурсов, но не может найти ресурс с именем name, метод возвращает null.

Свойство IgnoreCase определяет, учитывается ли сравнение name с именами ресурсов без учета регистра (по умолчанию) или учитывается регистр.

Применяется к

GetStream(String, CultureInfo)

Исходный код:
ResourceManager.cs
Исходный код:
ResourceManager.cs
Исходный код:
ResourceManager.cs

Важно!

Этот API несовместим с CLS.

Возвращает объект потока неуправляемой памяти из заданного ресурса, используя заданный язык и региональные параметры.

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, используется язык и региональные параметры для текущего потока.

Возвращаемое значение

Объект потока неуправляемой памяти, представляющий ресурс.

Атрибуты

Исключения

Значение указанного ресурса не является объектом MemoryStream.

name имеет значение null.

Не было найдено никаких возможных наборов ресурсов и отсутствуют ресурсы по умолчанию. Сведения об обработке этого исключения см. в подразделе "Обработка исключений MissingManifestResourceException и MissingSatelliteAssemblyException" раздела, посвященного классу ResourceManager.

Ресурсы языка и региональных параметров по умолчанию находятся во вспомогательной сборке, которую не удалось найти. Сведения об обработке этого исключения см. в подразделе "Обработка исключений MissingManifestResourceException и MissingSatelliteAssemblyException" раздела, посвященного классу ResourceManager.

Комментарии

Метод GetStream принимает имя ресурса, хранящегося в виде MemoryStream объекта, получает значение Object ресурса и возвращает UnmanagedMemoryStream объект . Для этого требуется работать непосредственно с потоком байтов, который затем преобразуется в объект . Этот метод полезен в первую очередь по соображениям производительности: получение ресурса в виде потока байтов вместо явного объекта может повысить производительность.

Возвращаемый ресурс локализуется для языка и региональных параметров, заданных параметром culture, или для языка и региональных параметров, заданных свойством CultureInfo.CurrentUICulture , если culture имеет значение null. Если ресурс не локализован для этого языка и региональных параметров, диспетчер ресурсов использует резервные правила для загрузки соответствующего ресурса. Если доступный набор локализованных ресурсов не найден, ResourceManager возвращается к ресурсам языка и региональных параметров по умолчанию. Если набор ресурсов для языка и региональных параметров по умолчанию не найден, метод создает MissingManifestResourceException исключение или, если ожидается, что набор ресурсов будет находиться во вспомогательной сборке, исключение MissingSatelliteAssemblyException . Если диспетчер ресурсов может загрузить соответствующий набор ресурсов, но не может найти ресурс с именем name, метод возвращает null.

Свойство IgnoreCase определяет, учитывается ли сравнение name с именами ресурсов без учета регистра (по умолчанию) или учитывается регистр.

Применяется к