Sdílet prostřednictvím


Grafické operace (C++/CLI)

Demonstruje manipulaci s obrázky pomocí sady Windows SDK.

Následující témata ukazují použití System.Drawing.Image třídy k provádění manipulace s obrázky.

Zobrazení obrázků pomocí rozhraní .NET Framework

Následující příklad kódu upraví obslužnou rutinu události On Malování na načtení ukazatele na Graphics objekt pro hlavní formulář. Funkce OnPaint je určená pro model Windows Forms aplikaci, s největší pravděpodobností vytvořenou pomocí průvodce aplikací sady Visual Studio.

Obrázek je reprezentován Image třídou. Data obrázku se načtou ze souboru .jpg pomocí System.Drawing.Image.FromFile metody. Než se obrázek nakreslí do formuláře, změní se velikost formuláře tak, aby odpovídala obrázku. Výkres obrázku se provádí s metodou System.Drawing.Graphics.DrawImage .

Image Obě třídy Graphics jsou v System.Drawing oboru názvů.

Příklad

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

Kreslení obrazců pomocí rozhraní .NET Framework

Následující příklad kódu používá Graphics třídu k úpravě OnPaint obslužné rutiny události na načtení ukazatele na Graphics objekt pro hlavní formulář. Tento ukazatel se pak použije k nastavení barvy pozadí formuláře a vykreslení čáry a oblouku System.Drawing.Graphics.DrawLine pomocí a DrawArc metod.

Příklad

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

Obměna obrázků pomocí rozhraní .NET Framework

Následující příklad kódu ukazuje použití System.Drawing.Image třídy k načtení image z disku, otočení o 90 stupňů a uložení jako nového souboru .jpg.

Příklad

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

Převod formátů souborů obrázků pomocí rozhraní .NET Framework

Následující příklad kódu ukazuje System.Drawing.Image třídu a System.Drawing.Imaging.ImageFormat výčet použitý k převodu a uložení souborů obrázků. Následující kód načte obrázek ze souboru .jpg a pak ho uloží ve formátech souborů .gif i .bmp.

Příklad

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

Začínáme s programováním grafiky

Informace o spravovaném kódu GDI+

Viz také

Programování pro .NET v jazyce C++/CLI (Visual C++)

System.Drawing