Grafikoperationen (C++/CLI)
Veranschaulicht die Bildmanipulation mithilfe des Windows SDK.
In den folgenden Themen wird die Verwendung der System.Drawing.Image-Klasse für die Bildmanipulation dargestellt.
Anzeigen von Bildern mit .NET Framework
Im folgenden Codebeispiel wird der OnPaint-Ereignishandler so geändert, dass ein Zeiger auf das Objekt für das Graphics Standard Formular abgerufen wird. Die OnPaint Funktion ist für eine Windows Forms-Anwendung vorgesehen, die höchstwahrscheinlich mit einem Visual Studio-Anwendungs-Assistenten erstellt wurde.
Das Bild wird durch die Image Klasse dargestellt. Die Bilddaten werden mithilfe der System.Drawing.Image.FromFile Methode aus einer JPG-Datei geladen. Bevor das Bild auf das Formular gezeichnet wird, wird die Größe des Formulars angepasst, um das Bild aufzunehmen. Die Zeichnung des Bilds wird mit der System.Drawing.Graphics.DrawImage Methode ausgeführt.
Die Klassen und Image Die Graphics Klassen befinden sich beide im System.Drawing Namespace.
Beispiel
#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 );
}
Zeichnen von Shapes mit .NET Framework
Im folgenden Codebeispiel wird die Graphics Klasse verwendet, um den OnPaint Ereignishandler zu ändern, um einen Zeiger auf das Objekt für das Graphics Standard Formular abzurufen. Dieser Zeiger wird dann verwendet, um die Hintergrundfarbe des Formulars festzulegen und mit den System.Drawing.Graphics.DrawLine Methoden DrawArc eine Linie und einen Bogen zu zeichnen.
Beispiel
#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 );
}
Drehen von Bildern mit .NET Framework
Im folgenden Codebeispiel wird die Verwendung der System.Drawing.Image Klasse zum Laden eines Bilds von einem Datenträger veranschaulicht, es um 90 Grad gedreht und als neue JPG-Datei gespeichert.
Beispiel
#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;
}
Konvertieren von Bilddateiformaten mit .NET Framework
Im folgenden Codebeispiel wird die System.Drawing.Image Klasse und die Enumeration veranschaulicht, die System.Drawing.Imaging.ImageFormat zum Konvertieren und Speichern von Bilddateien verwendet wird. Der folgende Code lädt ein Bild aus einer JPG-Datei und speichert es dann in .gif- und BMP-Dateiformaten.
Beispiel
#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;
}
Verwandte Abschnitte
Erste Schritte mit Grafikprogrammierung
Siehe auch
.NET Programming with C++/CLI (Visual C++) (.NET-Programmierung mit C++/CLI (Visual C++))