Bitmap 构造函数
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
初始化 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(Int32, Int32, PixelFormat) |
用指定的大小和格式初始化 Bitmap 类的新实例。 |
Bitmap(Int32, Int32, Int32, PixelFormat, IntPtr) |
用指定的大小、像素格式和像素数据初始化 Bitmap 类的新实例。 |
Bitmap(Image)
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
用于加载图像的数据流。
例外
示例
下面的代码示例演示如何从流加载位图。
此示例旨在与 Windows 窗体 一起使用。 Create包含名为 PictureBox1
的PictureBox窗体。 将代码粘贴到窗体中, 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)
参数
例外
此操作失败。
适用于
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)
参数
例外
此操作失败。
注解
此构造函数创建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
用于加载图像的数据流。
例外
注解
必须在 的生存期内 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
位图文件的名称。
示例
下面的代码示例演示如何从文件构造新位图。 该示例使用 GetPixel 和 SetPixel 方法重新着色图像。 它还使用 PixelFormat 属性。
此示例旨在与 Windows 窗体一起使用,该窗体分别包含 一ButtonLabel1
PictureBox个名为 Label、 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)
- 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
,传递 e
为 PaintEventArgs
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)
参数
例外
此操作失败。
适用于
Bitmap(Int32, Int32, Graphics)
- Source:
- Bitmap.cs
- Source:
- Bitmap.cs
- Source:
- Bitmap.cs
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)
参数
例外
g
为 null
。
注解
此方法创建的 新 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)
参数
- 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)
参数
- 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 之前,不应释放内存。