Udostępnij za pośrednictwem


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 zdarzenia OnPaint, aby uzyskać wskaźnik do obiektu formularza głównego Graphics. Funkcja OnPaint jest przeznaczona dla aplikacji Windows Forms, która prawdopodobnie została utworzona za pomocą kreatora 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 kodu użyto klasy Graphics, aby zmodyfikować obsługę zdarzeń OnPaint w celu pobrania wskaźnika do obiektu Graphics formularza głównego. Ten wskaźnik jest następnie używany do ustawiania koloru tła formularza oraz rysowania linii i łuku przy użyciu metod System.Drawing.Graphics.DrawLine 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 oraz wyliczenie System.Drawing.Imaging.ImageFormat, które są 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;
}

Wprowadzenie do programowania grafiki

Informacje o kodzie zarządzanym GDI+

Zobacz też

Programowanie .NET w języku C++/interfejsie wiersza polecenia (Visual C++)

System.Drawing