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)

用指定的大小和指定的 Graphics 对象的分辨率初始化 Bitmap 类的新实例。

Bitmap(Int32, Int32, PixelFormat)

用指定的大小和格式初始化 Bitmap 类的新实例。

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

用指定的大小、像素格式和像素数据初始化 Bitmap 类的新实例。

Bitmap(Image)

Source:
Bitmap.cs
Source:
Bitmap.cs
Source:
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

从中创建新 BitmapImage

适用于

Bitmap(Stream)

Source:
Bitmap.cs
Source:
Bitmap.cs
Source:
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 图像文件,其一维大于 65,535 像素。

示例

下面的代码示例演示如何从流加载位图。

此示例旨在与 Windows 窗体 一起使用。 Create包含名为 PictureBox1PictureBox窗体。 将代码粘贴到窗体中, 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使流保持打开状态。

由于 GDI+ 解码器的限制, System.ArgumentException 如果从单个尺寸大于 65,535 像素的 .png 图像文件构造位图,则会引发 。

另请参阅

适用于

Bitmap(String)

Source:
Bitmap.cs
Source:
Bitmap.cs
Source:
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)

Source:
Bitmap.cs
Source:
Bitmap.cs
Source:
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

从中创建新 BitmapImage

newSize
Size

表示新的 Bitmap 大小的 Size 结构。

例外

此操作失败。

适用于

Bitmap(Int32, Int32)

Source:
Bitmap.cs
Source:
Bitmap.cs
Source:
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 的高度(以像素为单位)。

例外

此操作失败。

注解

此构造函数创建BitmapPixelFormat枚举值为 的 Format32bppArgb

适用于

Bitmap(Stream, Boolean)

Source:
Bitmap.cs
Source:
Bitmap.cs
Source:
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

如果要为此 Bitmap 使用颜色校正,则为 true;否则为 false

例外

stream 不包含图像数据,或者为 null

- 或 -

stream 包含一个 PNG 图像文件,其一维大于 65,535 像素。

注解

必须在 的生存期内 Bitmap使流保持打开状态。

由于 GDI+ 解码器的限制, System.ArgumentException 如果从单个尺寸大于 65,535 像素的 .png 图像文件构造位图,则会引发 。

另请参阅

适用于

Bitmap(String, Boolean)

Source:
Bitmap.cs
Source:
Bitmap.cs
Source:
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

如果要为此 Bitmap 使用颜色校正,则为 true;否则为 false

示例

下面的代码示例演示如何从文件构造新位图。 该示例使用 GetPixelSetPixel 方法重新着色图像。 它还使用 PixelFormat 属性。

此示例旨在与 Windows 窗体一起使用,该窗体分别包含 一ButtonLabel1PictureBox个名为 LabelPictureBox1 和 。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)

Source:
Bitmap.cs
Source:
Bitmap.cs
Source:
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 窗体中。 处理表单的事件 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 可以将 类型和 Button.bmp 传递给此构造函数,它将查找名为 的资源 System.Windows.Forms.Button.bmp

另请参阅

适用于

Bitmap(Image, Int32, Int32)

Source:
Bitmap.cs
Source:
Bitmap.cs
Source:
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

从中创建新 BitmapImage

width
Int32

Bitmap 的宽度(以像素为单位)。

height
Int32

Bitmap 的高度(以像素为单位)。

例外

此操作失败。

适用于

Bitmap(Int32, Int32, Graphics)

Source:
Bitmap.cs
Source:
Bitmap.cs
Source:
Bitmap.cs

用指定的大小和指定的 Graphics 对象的分辨率初始化 Bitmap 类的新实例。

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 指定分辨率。

例外

gnull

注解

此方法创建的 新 Bitmap 分别从 DpiX 的 和 DpiY 属性 g获取其水平和垂直分辨率。

适用于

Bitmap(Int32, Int32, PixelFormat)

Source:
Bitmap.cs
Source:
Bitmap.cs
Source:
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。 例如,指定 Gdi 将导致一个 ArgumentException,但 Format48bppRgb 不会出现这种情况。

适用于

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

Source:
Bitmap.cs
Source:
Bitmap.cs
Source:
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 位)乘以位图的宽度。 传递给此参数的值必须为 4 的倍数。

format
PixelFormat

Bitmap 的像素格式。 这必须指定以 开头 Format的值。

scan0
IntPtr

nativeint

指针指向包含像素数据的字节数组。

例外

已指定名称不以格式开头的 PixelFormat。 例如,指定 Gdi 将导致一个 ArgumentException,但 Format48bppRgb 不会出现这种情况。

示例

下面的代码示例演示如何使用 Bitmap(Int32, Int32, Int32, PixelFormat, IntPtr) 构造函数。 此示例旨在与 Windows 窗体 一起使用,并且需要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 之前,不应释放内存。

适用于