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


Bitmap Конструкторы

Определение

Инициализирует новый экземпляр класса Bitmap.

Перегрузки

Bitmap(Image)

Инициализирует новый экземпляр класса Bitmap из указанного существующего изображения.

Bitmap(Stream)

Инициализирует новый экземпляр класса Bitmap из указанного потока данных.

Bitmap(String)

Инициализирует новый экземпляр класса Bitmap из указанного файла.

Bitmap(Image, Size)

Инициализирует новый экземпляр класса Bitmap из указанного существующего изображения, масштабированного до заданного размера.

Bitmap(Int32, Int32)

Инициализирует новый экземпляр класса Bitmap с заданным размером.

Bitmap(Stream, Boolean)

Инициализирует новый экземпляр класса Bitmap из указанного потока данных.

Bitmap(String, Boolean)

Инициализирует новый экземпляр класса Bitmap из указанного файла.

Bitmap(Type, String)

Инициализирует новый экземпляр класса Bitmap из указанного ресурса.

Bitmap(Image, Int32, Int32)

Инициализирует новый экземпляр класса Bitmap из указанного существующего изображения, масштабированного до заданного размера.

Bitmap(Int32, Int32, Graphics)

Инициализирует новый экземпляр класса Bitmap с заданным размером и с разрешением указанного объекта Graphics.

Bitmap(Int32, Int32, PixelFormat)

Инициализирует новый экземпляр класса Bitmap с заданными значениями размера и формата.

Bitmap(Int32, Int32, Int32, PixelFormat, IntPtr)

Инициализирует новый экземпляр класса Bitmap с заданным размером, форматом и данными пикселей.

Bitmap(Image)

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

Инициализирует новый экземпляр класса Bitmap из указанного существующего изображения.

public:
 Bitmap(System::Drawing::Image ^ original);
public Bitmap (System.Drawing.Image original);
new System.Drawing.Bitmap : System.Drawing.Image -> System.Drawing.Bitmap
Public Sub New (original As Image)

Параметры

original
Image

Объект Image, из которого будет создан новый объект Bitmap.

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

Bitmap(Stream)

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

Инициализирует новый экземпляр класса Bitmap из указанного потока данных.

public:
 Bitmap(System::IO::Stream ^ stream);
public Bitmap (System.IO.Stream stream);
new System.Drawing.Bitmap : System.IO.Stream -> System.Drawing.Bitmap
Public Sub New (stream As Stream)

Параметры

stream
Stream

Поток данных, используемый для загрузки изображения.

Исключения

Параметр stream не содержит данные изображения или равен null.

-или-

Поток stream содержит файл изображения PNG, один из размеров которого превышает 65535 пикселей.

Примеры

В следующем примере кода показано, как загрузить растровое изображение из потока.

Этот пример предназначен для использования с Windows Forms. Create форму, содержащую PictureBox с именем PictureBox1. Вставьте код в форму и вызовите InitializeStreamBitmap метод из конструктора формы или Load метода обработки событий.

void InitializeStreamBitmap()
{
   try
   {
      System::Net::WebRequest^ request = System::Net::WebRequest::Create( "http://www.microsoft.com//h/en-us/r/ms_masthead_ltr.gif" );
      System::Net::WebResponse^ response = request->GetResponse();
      System::IO::Stream^ responseStream = response->GetResponseStream();
      Bitmap^ bitmap2 = gcnew Bitmap( responseStream );
      PictureBox1->Image = bitmap2;
   }
   catch ( System::Net::WebException^ ) 
   {
      MessageBox::Show( "There was an error opening the image file."
      "Check the URL" );
   }

}
private void InitializeStreamBitmap()
{
    try
    {
        System.Net.WebRequest request = 
            System.Net.WebRequest.Create(
            "http://www.microsoft.com//h/en-us/r/ms_masthead_ltr.gif");
        System.Net.WebResponse response = request.GetResponse();
        System.IO.Stream responseStream = 
            response.GetResponseStream();
        Bitmap bitmap2 = new Bitmap(responseStream);
        PictureBox1.Image = bitmap2;
    }
    catch(System.Net.WebException)
    {
        MessageBox.Show("There was an error opening the image file."
           + "Check the URL");
    }
}
Private Sub InitializeStreamBitmap()
    Try
        Dim request As System.Net.WebRequest = _
            System.Net.WebRequest.Create( _
            "http://www.microsoft.com//h/en-us/r/ms_masthead_ltr.gif")
        Dim response As System.Net.WebResponse = request.GetResponse()
        Dim responseStream As System.IO.Stream = response.GetResponseStream()
        Dim bitmap2 As New Bitmap(responseStream)
        PictureBox1.Image = bitmap2

    Catch ex As System.Net.WebException
        MessageBox.Show("There was an error opening the image file. Check the URL")
    End Try
End Sub

Комментарии

Поток должен оставаться открытым в течение всего времени существования Bitmap.

Из-за ограничения декодера System.ArgumentException GDI+ создается при создании растрового изображения из файла .png изображения с одним измерением более 65 535 пикселей.

См. также раздел

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

Bitmap(String)

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

Инициализирует новый экземпляр класса Bitmap из указанного файла.

public:
 Bitmap(System::String ^ filename);
public Bitmap (string filename);
new System.Drawing.Bitmap : string -> System.Drawing.Bitmap
Public Sub New (filename As String)

Параметры

filename
String

Имя файла растрового изображения и путь к нему.

Исключения

Указанный файл не найден.

Комментарии

Имя файла и путь могут быть относительно приложения или абсолютным путем. Используйте этот конструктор для открытия изображений в следующих форматах файлов: BMP, GIF, EXIF, JPG, PNG и TIFF. Дополнительные сведения о поддерживаемых форматах см. в разделе Типы растровых изображений. Файл остается заблокированным до тех пор, пока не Bitmap будет удален.

См. также раздел

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

Bitmap(Image, Size)

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

Инициализирует новый экземпляр класса Bitmap из указанного существующего изображения, масштабированного до заданного размера.

public:
 Bitmap(System::Drawing::Image ^ original, System::Drawing::Size newSize);
public Bitmap (System.Drawing.Image original, System.Drawing.Size newSize);
new System.Drawing.Bitmap : System.Drawing.Image * System.Drawing.Size -> System.Drawing.Bitmap
Public Sub New (original As Image, newSize As Size)

Параметры

original
Image

Объект Image, из которого будет создан новый объект Bitmap.

newSize
Size

Структура Size, представляющая размер нового изображения Bitmap.

Исключения

Операция не удалась.

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

Bitmap(Int32, Int32)

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

Инициализирует новый экземпляр класса Bitmap с заданным размером.

public:
 Bitmap(int width, int height);
public Bitmap (int width, int height);
new System.Drawing.Bitmap : int * int -> System.Drawing.Bitmap
Public Sub New (width As Integer, height As Integer)

Параметры

width
Int32

Ширина в пикселях нового изображения Bitmap.

height
Int32

Высота в пикселях нового изображения Bitmap.

Исключения

Операция не удалась.

Комментарии

Этот конструктор создает Bitmap со значением PixelFormat перечисления Format32bppArgb.

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

Bitmap(Stream, Boolean)

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

Инициализирует новый экземпляр класса Bitmap из указанного потока данных.

public:
 Bitmap(System::IO::Stream ^ stream, bool useIcm);
public Bitmap (System.IO.Stream stream, bool useIcm);
new System.Drawing.Bitmap : System.IO.Stream * bool -> System.Drawing.Bitmap
Public Sub New (stream As Stream, useIcm As Boolean)

Параметры

stream
Stream

Поток данных, используемый для загрузки изображения.

useIcm
Boolean

Значение true, чтобы воспользоваться цветокоррекцией для этого изображения Bitmap; в противном случае — значение false.

Исключения

Параметр stream не содержит данные изображения или равен null.

-или-

Поток stream содержит файл изображения PNG, один из размеров которого превышает 65535 пикселей.

Комментарии

Поток должен оставаться открытым в течение всего времени существования Bitmap.

Из-за ограничения декодера System.ArgumentException GDI+ создается при создании растрового изображения из файла .png изображения с одним измерением более 65 535 пикселей.

См. также раздел

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

Bitmap(String, Boolean)

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

Инициализирует новый экземпляр класса Bitmap из указанного файла.

public:
 Bitmap(System::String ^ filename, bool useIcm);
public Bitmap (string filename, bool useIcm);
new System.Drawing.Bitmap : string * bool -> System.Drawing.Bitmap
Public Sub New (filename As String, useIcm As Boolean)

Параметры

filename
String

Имя файла точечного рисунка.

useIcm
Boolean

Значение true, чтобы воспользоваться цветокоррекцией для этого изображения Bitmap; в противном случае — значение false.

Примеры

В следующем примере кода показано, как создать новое растровое изображение из файла. В примере используются методы GetPixel и SetPixel для перекраски изображения. Он также использует PixelFormat свойство .

Этот пример предназначен для использования с Формой Windows Forms, содержащей Label, PictureBox и Button с именами Label1, PictureBox1 и Button1соответственно. Вставьте код в форму и свяжите Button1_Click метод с событием кнопки Click .

private:
   Bitmap^ image1;
   void Button1_Click( System::Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      try
      {
         
         // Retrieve the image.
         image1 = gcnew Bitmap( "C:\\Documents and Settings\\All Users\\"
         "Documents\\My Music\\music.bmp",true );
         int x;
         int y;
         
         // Loop through the images pixels to reset color.
         for ( x = 0; x < image1->Width; x++ )
         {
            for ( y = 0; y < image1->Height; y++ )
            {
               Color pixelColor = image1->GetPixel( x, y );
               Color newColor = Color::FromArgb( pixelColor.R, 0, 0 );
               image1->SetPixel( x, y, newColor );

            }

         }
         
         // Set the PictureBox to display the image.
         PictureBox1->Image = image1;
         
         // Display the pixel format in Label1.
         Label1->Text = String::Format( "Pixel format: {0}", image1->PixelFormat );
      }
      catch ( ArgumentException^ ) 
      {
         MessageBox::Show( "There was an error."
         "Check the path to the image file." );
      }

   }
Bitmap image1;

private void Button1_Click(System.Object sender, System.EventArgs e)
{

    try
    {
        // Retrieve the image.
        image1 = new Bitmap(@"C:\Documents and Settings\All Users\" 
            + @"Documents\My Music\music.bmp", true);

        int x, y;

        // Loop through the images pixels to reset color.
        for(x=0; x<image1.Width; x++)
        {
            for(y=0; y<image1.Height; y++)
            {
                Color pixelColor = image1.GetPixel(x, y);
                Color newColor = Color.FromArgb(pixelColor.R, 0, 0);
                image1.SetPixel(x, y, newColor);
            }
        }

        // Set the PictureBox to display the image.
        PictureBox1.Image = image1;

        // Display the pixel format in Label1.
        Label1.Text = "Pixel format: "+image1.PixelFormat.ToString();
    }
    catch(ArgumentException)
    {
        MessageBox.Show("There was an error." +
            "Check the path to the image file.");
    }
}
Dim image1 As Bitmap

Private Sub Button1_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Button1.Click

    Try
        ' Retrieve the image.
        image1 = New Bitmap( _
            "C:\Documents and Settings\All Users\Documents\My Music\music.bmp", _
            True)

        Dim x, y As Integer

        ' Loop through the images pixels to reset color.
        For x = 0 To image1.Width - 1
            For y = 0 To image1.Height - 1
                Dim pixelColor As Color = image1.GetPixel(x, y)
                Dim newColor As Color = _
                    Color.FromArgb(pixelColor.R, 0, 0)
                image1.SetPixel(x, y, newColor)
            Next
        Next

        ' Set the PictureBox to display the image.
        PictureBox1.Image = image1

        ' Display the pixel format in Label1.
        Label1.Text = "Pixel format: " + image1.PixelFormat.ToString()

    Catch ex As ArgumentException
        MessageBox.Show("There was an error." _
            & "Check the path to the image file.")
    End Try
End Sub

Комментарии

Используйте этот конструктор для открытия изображений в следующих форматах файлов: BMP, GIF, EXIF, JPG, PNG и TIFF. Дополнительные сведения о поддерживаемых форматах см. в разделе Типы растровых изображений. Файл остается заблокированным до тех пор, пока не Bitmap будет удален.

См. также раздел

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

Bitmap(Type, String)

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

Инициализирует новый экземпляр класса Bitmap из указанного ресурса.

public:
 Bitmap(Type ^ type, System::String ^ resource);
public Bitmap (Type type, string resource);
new System.Drawing.Bitmap : Type * string -> System.Drawing.Bitmap
Public Sub New (type As Type, resource As String)

Параметры

type
Type

Класс, используемый для извлечения ресурсов.

resource
String

Имя ресурса.

Примеры

В следующем примере кода показано, как создать растровое изображение из типа и как использовать Save метод . Чтобы запустить этот пример, вставьте код в форму Windows Forms. Обработайте событие формы Paint и вызовите ConstructFromResourceSaveAsGif метод , передав как ePaintEventArgs

private:
    void ConstructFromResourceSaveAsGif(PaintEventArgs^ e)
    {
        // Construct a bitmap from the button image resource.
        Bitmap^ bmp1 = gcnew Bitmap(Button::typeid, "Button.bmp");
        String^ savePath =  
            Environment::GetEnvironmentVariable("TEMP") + "\\Button.bmp";

        try
        {
            // Save the image as a GIF.
            bmp1->Save(savePath, System::Drawing::Imaging::ImageFormat::Gif);
        }
        catch (IOException^)
        {
            // Carry on regardless
        }

        // Construct a new image from the GIF file.
        Bitmap^ bmp2 = nullptr;
        if (File::Exists(savePath))
        {
            bmp2 = gcnew Bitmap(savePath);
        }

        // Draw the two images.
        e->Graphics->DrawImage(bmp1, Point(10, 10));

        // If bmp1 did not save to disk, bmp2 may be null
        if (bmp2 != nullptr)
        {
            e->Graphics->DrawImage(bmp2, Point(10, 40));
        }

        // Dispose of the image files.
        delete bmp1;
        if (bmp2 != nullptr)
        {
            delete bmp2;
        }
    }
private void ConstructFromResourceSaveAsGif(PaintEventArgs e)
{

    // Construct a bitmap from the button image resource.
    Bitmap bmp1 = new Bitmap(typeof(Button), "Button.bmp");

    // Save the image as a GIF.
    bmp1.Save("c:\\button.gif", System.Drawing.Imaging.ImageFormat.Gif);

    // Construct a new image from the GIF file.
    Bitmap bmp2 = new Bitmap("c:\\button.gif");

    // Draw the two images.
    e.Graphics.DrawImage(bmp1, new Point(10, 10));
    e.Graphics.DrawImage(bmp2, new Point(10, 40));

    // Dispose of the image files.
    bmp1.Dispose();
    bmp2.Dispose();
}
Private Sub ConstructFromResourceSaveAsGif(ByVal e As PaintEventArgs)

    ' Construct a bitmap from the button image resource.
    Dim bmp1 As New Bitmap(GetType(Button), "Button.bmp")

    ' Save the image as a GIF.
    bmp1.Save("c:\button.gif", System.Drawing.Imaging.ImageFormat.Gif)

    ' Construct a new image from the GIF file.
    Dim bmp2 As New Bitmap("c:\button.gif")

    ' Draw the two images.
    e.Graphics.DrawImage(bmp1, New Point(10, 10))
    e.Graphics.DrawImage(bmp2, New Point(10, 40))

    ' Dispose of the image files.
    bmp1.Dispose()
    bmp2.Dispose()
End Sub

Комментарии

Этот конструктор объединяет пространство имен заданного типа со строковым именем ресурса и ищет совпадение в манифесте сборки. Например, можно передать тип и Button.bmp в Button этот конструктор, и он будет искать ресурс с именем System.Windows.Forms.Button.bmp.

См. также раздел

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

Bitmap(Image, Int32, Int32)

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

Инициализирует новый экземпляр класса Bitmap из указанного существующего изображения, масштабированного до заданного размера.

public:
 Bitmap(System::Drawing::Image ^ original, int width, int height);
public Bitmap (System.Drawing.Image original, int width, int height);
new System.Drawing.Bitmap : System.Drawing.Image * int * int -> System.Drawing.Bitmap
Public Sub New (original As Image, width As Integer, height As Integer)

Параметры

original
Image

Объект Image, из которого будет создан новый объект Bitmap.

width
Int32

Ширина в пикселях нового изображения Bitmap.

height
Int32

Высота в пикселях нового изображения Bitmap.

Исключения

Операция не удалась.

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

Bitmap(Int32, Int32, Graphics)

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

Инициализирует новый экземпляр класса Bitmap с заданным размером и с разрешением указанного объекта Graphics.

public:
 Bitmap(int width, int height, System::Drawing::Graphics ^ g);
public Bitmap (int width, int height, System.Drawing.Graphics g);
new System.Drawing.Bitmap : int * int * System.Drawing.Graphics -> System.Drawing.Bitmap
Public Sub New (width As Integer, height As Integer, g As Graphics)

Параметры

width
Int32

Ширина в пикселях нового изображения Bitmap.

height
Int32

Высота в пикселях нового изображения Bitmap.

g
Graphics

Объект Graphics, который определяет разрешение нового объекта Bitmap.

Исключения

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

Комментарии

Новый Bitmap объект, создаваемый этим методом, принимает горизонтальное и вертикальное DpiX разрешение из свойств gи DpiY соответственно.

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

Bitmap(Int32, Int32, PixelFormat)

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

Инициализирует новый экземпляр класса Bitmap с заданными значениями размера и формата.

public:
 Bitmap(int width, int height, System::Drawing::Imaging::PixelFormat format);
public Bitmap (int width, int height, System.Drawing.Imaging.PixelFormat format);
new System.Drawing.Bitmap : int * int * System.Drawing.Imaging.PixelFormat -> System.Drawing.Bitmap
Public Sub New (width As Integer, height As Integer, format As PixelFormat)

Параметры

width
Int32

Ширина в пикселях нового изображения Bitmap.

height
Int32

Высота в пикселях нового изображения Bitmap.

format
PixelFormat

Формат пикселей для нового объекта Bitmap. Необходимо указать значение, начинающееся с Format.

Исключения

Задано значение PixelFormat, имя которого не начинается с Format. Например, задание поля Gdi приведет к ArgumentException, но Format48bppRgb не приведет.

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

Bitmap(Int32, Int32, Int32, PixelFormat, IntPtr)

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

Инициализирует новый экземпляр класса Bitmap с заданным размером, форматом и данными пикселей.

public:
 Bitmap(int width, int height, int stride, System::Drawing::Imaging::PixelFormat format, IntPtr scan0);
public Bitmap (int width, int height, int stride, System.Drawing.Imaging.PixelFormat format, IntPtr scan0);
new System.Drawing.Bitmap : int * int * int * System.Drawing.Imaging.PixelFormat * nativeint -> System.Drawing.Bitmap
Public Sub New (width As Integer, height As Integer, stride As Integer, format As PixelFormat, scan0 As IntPtr)

Параметры

width
Int32

Ширина в пикселях нового изображения Bitmap.

height
Int32

Высота в пикселях нового изображения Bitmap.

stride
Int32

Целое число, определяющее смещение в байтах между строкой развертки и следующей строкой развертки. Обычно (но необязательно) это число байтов в формате пикселей (например, 2 для 16 битов на пиксель), умноженное на ширину точечного рисунка. Значение, переданное в этот параметр, должно быть кратно четырем.

format
PixelFormat

Формат пикселей для нового объекта Bitmap. Необходимо указать значение, начинающееся с Format.

scan0
IntPtr

nativeint

Указатель на массив байтов, содержащий данные пикселей.

Исключения

Задано значение PixelFormat, имя которого не начинается с Format. Например, задание поля Gdi приведет к ArgumentException, но Format48bppRgb не приведет.

Примеры

В следующем примере кода показано, как использовать Bitmap(Int32, Int32, Int32, PixelFormat, IntPtr) конструктор . Этот пример предназначен для использования с Windows Forms и требует PaintEventArgs параметра , который является параметром Paint события .

private void BitmapConstructorEx(PaintEventArgs e)
{

    // Create a bitmap.
    Bitmap bmp = new Bitmap("c:\\fakePhoto.jpg");
    
   // Retrieve the bitmap data from the bitmap.
    System.Drawing.Imaging.BitmapData bmpData = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), 
        ImageLockMode.ReadOnly, bmp.PixelFormat);

    //Create a new bitmap.
    Bitmap newBitmap = new Bitmap(200, 200, bmpData.Stride, bmp.PixelFormat, bmpData.Scan0);

    bmp.UnlockBits(bmpData);

    // Draw the new bitmap.
    e.Graphics.DrawImage(newBitmap, 10, 10);
}
Private Sub BitmapConstructorEx(ByVal e As PaintEventArgs)

    ' Create a bitmap.
    Dim bmp As New Bitmap("c:\fakePhoto.jpg")

    ' Retrieve the bitmap data from the bitmap.
    Dim bmpData As System.Drawing.Imaging.BitmapData = bmp.LockBits(New Rectangle(0, 0, bmp.Width, bmp.Height), _
        ImageLockMode.ReadOnly, bmp.PixelFormat)

    'Create a new bitmap.
    Dim newBitmap As New Bitmap(200, 200, bmpData.Stride, bmp.PixelFormat, bmpData.Scan0)

    bmp.UnlockBits(bmpData)

    ' Draw the new bitmap.
    e.Graphics.DrawImage(newBitmap, 10, 10)

End Sub

Комментарии

Вызывающий объект отвечает за выделение и освобождение блока памяти, указанного параметром scan0 . Однако память не должна освобождаться до тех пор, пока не будет освобождена связанная Bitmap память.

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