Partilhar via


Operações de gráficos (C++/CLI)

Demonstra a manipulação de imagem usando o SDK do Windows.

Os tópicos a seguir demonstram o uso da classe System.Drawing.Image para executar a manipulação de imagem.

Exibir imagens com o .NET Framework

O exemplo de código a seguir modifica o manipulador de eventos OnPaint para recuperar um ponteiro para o objeto Graphics do formulário principal. A função OnPaint destina-se a um aplicativo do Windows Forms, provavelmente criado com um assistente de aplicativo do Visual Studio.

A imagem é representada pela classe Image. Os dados da imagem são carregados de um arquivo .jpg usando o método System.Drawing.Image.FromFile. Antes que a imagem seja desenhada no formulário, o formulário é redimensionado para acomodar a imagem. O desenho da imagem é executado com o método System.Drawing.Graphics.DrawImage.

As classes Graphics e Image estão no namespace System.Drawing.

Exemplo

#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 );
}

Desenhar formas com o .NET Framework

O exemplo de código a seguir usa a classe Graphics para modificar o manipulador de eventos OnPaint e recuperar um ponteiro para o objeto Graphics do formulário principal. Esse ponteiro é usado para definir a cor da tela de fundo do formulário e desenhar uma linha e um arco usando os métodos System.Drawing.Graphics.DrawLine e DrawArc.

Exemplo

#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 );
}

Girar imagens com o .NET Framework

O exemplo de código a seguir demonstra o uso da classe System.Drawing.Image para carregar uma imagem do disco, girá-la 90 graus e salvá-la como um novo arquivo .jpg.

Exemplo

#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;
}

Converter formatos de arquivo de imagem com o .NET Framework

O exemplo de código a seguir demonstra a classe System.Drawing.Image e a enumeração System.Drawing.Imaging.ImageFormat usadas para converter e salvar arquivos de imagem. O código a seguir carrega uma imagem de um arquivo .jpg e, em seguida, salva-a em formatos de arquivo .gif e .bmp.

Exemplo

#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;
}

Introdução à programação de elementos gráficos

Sobre o Código Gerenciado no GDI+

Confira também

Programação do .NET com C++/CLI (Visual C++)

System.Drawing