Operaciones de gráficos (C++/CLI)
Muestra la manipulación de imágenes con Windows SDK.
En los temas siguientes se muestra el uso de la clase System.Drawing.Image para realizar la manipulación de imágenes.
Visualización de imágenes con .NET Framework
En el ejemplo de código siguiente, se modifica el controlador de eventos OnPaint para recuperar un puntero al objeto Graphics para el formulario principal. La función OnPaint está pensada para una aplicación de Windows Forms, creada muy probablemente con un asistente para aplicaciones de Visual Studio.
La imagen se representa con la clase Image. Los datos de imagen se cargan desde un archivo .jpg usando el método System.Drawing.Image.FromFile. Antes de dibujar la imagen en el formulario, se cambia el tamaño del formulario para dar cabida a la imagen. El dibujo de la imagen se realiza con el método System.Drawing.Graphics.DrawImage.
Las clases Graphics y Image están en el espacio de nombres System.Drawing.
Ejemplo
#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 );
}
Dibujo de formas con .NET Framework
En el ejemplo de código siguiente, se usa la clase Graphics para modificar el controlador de eventos OnPaint con el fin de recuperar un puntero al objeto Graphics para el formulario principal. Después, este puntero se usa para establecer el color de fondo del formulario y dibujar una línea y un arco con los métodos System.Drawing.Graphics.DrawLine y DrawArc.
Ejemplo
#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 );
}
Rotación de imágenes con .NET Framework
En el ejemplo de código siguiente, se muestra el uso de la clase System.Drawing.Image para cargar una imagen desde el disco, girarla 90 grados y guardarla como un nuevo archivo .jpg.
Ejemplo
#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;
}
Conversión de formatos de archivo de imagen con .NET Framework
En el ejemplo de código siguiente, se muestran la clase System.Drawing.Image y la enumeración System.Drawing.Imaging.ImageFormat que se usan para convertir y guardar archivos de imagen. El código siguiente carga una imagen de un archivo .jpg y después la guarda con los formatos de archivo .gif y .bmp.
Ejemplo
#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;
}
Secciones relacionadas
Introducción a la programación de gráficos