Operacje graficzne (C++/CLI)
Demonstruje manipulowanie obrazami przy użyciu zestawu Windows SDK.
W poniższych tematach pokazano użycie System.Drawing.Image klasy do wykonywania manipulacji obrazami.
Wyświetlanie obrazów za pomocą programu .NET Framework
Poniższy przykład kodu modyfikuje procedurę obsługi zdarzeń OnPaint, aby pobrać wskaźnik do Graphics obiektu formularza głównego. Funkcja jest przeznaczona OnPaint dla aplikacji Windows Forms, która najprawdopodobniej została utworzona za pomocą kreatora aplikacji programu Visual Studio.
Obraz jest reprezentowany przez klasę Image . Dane obrazu są ładowane z pliku .jpg przy użyciu System.Drawing.Image.FromFile metody . Zanim obraz zostanie narysowany do formularza, rozmiar formularza zostanie zmieniony, aby uwzględnić obraz. Rysunek obrazu jest wykonywany przy użyciu System.Drawing.Graphics.DrawImage metody .
Klasy Graphics i Image znajdują się w System.Drawing przestrzeni nazw.
Przykład
#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 );
}
Rysowanie kształtów za pomocą programu .NET Framework
W poniższym przykładzie Graphics kodu użyto klasy , aby zmodyfikować OnPaint procedurę obsługi zdarzeń w celu pobrania wskaźnika do Graphics obiektu formularza głównego. Ten wskaźnik jest następnie używany do ustawiania koloru tła formularza i rysowania linii i łuku System.Drawing.Graphics.DrawLine przy użyciu metod i DrawArc .
Przykład
#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 );
}
Obracanie obrazów za pomocą programu .NET Framework
W poniższym przykładzie kodu pokazano użycie System.Drawing.Image klasy do ładowania obrazu z dysku, obracania go o 90 stopni i zapisywania go jako nowego pliku .jpg.
Przykład
#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;
}
Konwertowanie formatów plików obrazów za pomocą programu .NET Framework
W poniższym przykładzie kodu przedstawiono klasę System.Drawing.Image i System.Drawing.Imaging.ImageFormat wyliczenie używane do konwertowania i zapisywania plików obrazów. Poniższy kod ładuje obraz z pliku .jpg, a następnie zapisuje go w formatach plików .gif i .bmp.
Przykład
#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;
}
Sekcje pokrewne
Wprowadzenie do programowania grafiki
Informacje o kodzie zarządzanym GDI+
Zobacz też
Programowanie .NET w języku C++/interfejsie wiersza polecenia (Visual C++)