图形操作 (C++/CLI)

演示使用 Windows SDK 进行图像处理。

以下主题演示了如何使用 System.Drawing.Image 类来执行图像处理。

使用 .NET Framework 显示图像

下面的代码示例修改 OnPaint 事件处理程序以检索指向主窗体的 Graphics 对象的指针。 OnPaint 函数适用于 Windows 窗体应用程序,这种应用程序很可能是使用 Visual Studio 应用程序向导创建的。

图像由 Image 类表示。 使用 System.Drawing.Image.FromFile 方法从 .jpg 文件加载图像数据。 在将图像绘制到窗体之前,会调整窗体的大小以适应图像。 使用 System.Drawing.Graphics.DrawImage 方法执行图像的绘制。

GraphicsImage 类都在 System.Drawing 命名空间中。

示例

#using <system.drawing.dll>

using namespace System;
using namespace System::Drawing;

protected:
virtual Void Form1::OnPaint(PaintEventArgs^ pe) override
{
    Graphics^ g = pe->Graphics;
    Image^ image = Image::FromFile("SampleImage.jpg");
    Form::ClientSize = image->Size;
    g->DrawImage( image, 0, 0, image->Size.Width, image->Size.Height );
}

使用 .NET Framework 绘制形状

下面的代码示例使用 Graphics 类来修改 OnPaint 事件处理程序以检索指向主窗体的 Graphics 对象的指针。 然后使用该指针设置窗体的背景颜色,并使用 System.Drawing.Graphics.DrawLineDrawArc 方法绘制一条直线和一条弧线。

示例

#using <system.drawing.dll>
using namespace System;
using namespace System::Drawing;
// ...
protected:
virtual Void Form1::OnPaint(PaintEventArgs^ pe ) override
{
   Graphics^ g = pe->Graphics;
   g->Clear(Color::AntiqueWhite);

   Rectangle rect = Form::ClientRectangle;
   Rectangle smallRect;
   smallRect.X = rect.X + rect.Width / 4;
   smallRect.Y = rect.Y + rect.Height / 4;
   smallRect.Width = rect.Width / 2;
   smallRect.Height = rect.Height / 2;

   Pen^ redPen = gcnew Pen(Color::Red);
   redPen->Width = 4;
   g->DrawLine(redPen, 0, 0, rect.Width, rect.Height);

   Pen^ bluePen = gcnew Pen(Color::Blue);
   bluePen->Width = 10;
   g->DrawArc( bluePen, smallRect, 90, 270 );
}

使用 .NET Framework 旋转图像

下面的代码示例演示了使用 System.Drawing.Image 类从磁盘加载图像、将其旋转 90 度并将其保存为新的 .jpg 文件。

示例

#using <system.drawing.dll>

using namespace System;
using namespace System::Drawing;

int main()
{
   Image^ image = Image::FromFile("SampleImage.jpg");
   image->RotateFlip( RotateFlipType::Rotate90FlipNone );
   image->Save("SampleImage_rotated.jpg");
   return 0;
}

使用 .NET Framework 转换图像文件格式

下面的代码示例演示了用于转换和保存图像文件的 System.Drawing.Image 类和 System.Drawing.Imaging.ImageFormat 枚举。 以下代码从 .jpg 文件加载图像,然后将其保存为 .gif 和 .bmp 文件格式。

示例

#using <system.drawing.dll>

using namespace System;
using namespace System::Drawing;
using namespace System::Drawing::Imaging;

int main()
{
   Image^ image = Image::FromFile("SampleImage.jpg");
   image->Save("SampleImage.png", ImageFormat::Png);
   image->Save("SampleImage.bmp", ImageFormat::Bmp);

   return 0;
}

图形编程入门

关于 GDI+ 托管代码

另请参阅

使用 C++/CLI (Visual C++) 进行 .NET 编程

System.Drawing