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 OnPaint 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í 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átu .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;
}
Související oddíly
Začínáme s programováním grafiky
Informace o spravovaném kódu GDI+