Grafické operace (C++/CLI)
Demonstruje manipulaci s obrázky pomocí Windows SDK.
Následující témata ukazují použití třídy System.Drawing.Image k manipulaci s obrázky.
Zobrazení obrázků pomocí .NET Framework
Následující příklad kódu upraví obslužnou rutinu události OnPaint tak, aby načítá ukazatel na objekt Graphics hlavního formuláře. Funkce OnPaint je určená pro Windows Forms, která je pravděpodobně vytvořena pomocí Visual Studio aplikace.
Obrázek je reprezentován třídou Image. Data obrázku se načítá z .jpg pomocí metody System.Drawing.Image.FromFile. Než se obrázek nakreslí do formuláře, změní se velikost formuláře tak, aby vyhovoval obrázku. Kreslení obrázku se provádí pomocí metody System.Drawing.Graphics.DrawImage.
Třídy Graphicsa Image jsou v oboru názvů System.Drawing.
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í .NET Framework
Následující příklad kódu používá třídu Graphics k úpravě obslužné rutiny události OnPaint pro načtení ukazatele na objekt Graphics hlavního formuláře. Tento ukazatel se pak použije k nastavení barvy pozadí formuláře a kreslení čáry a oblouku pomocí metod System.Drawing.Graphics.DrawLine a DrawArc.
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 );
}
Otočení obrázků pomocí .NET Framework
Následující příklad kódu ukazuje použití třídy System.Drawing.Image k načtení obrázku z disku, otočení o 90 stupňů a jeho uložení jako nového .jpg souboru.
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í .NET Framework
Následující příklad kódu ukazuje třídu System.Drawing.Image a výčet System.Drawing.Imaging.ImageFormat používané 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ží do .gif i .bmp souborů.
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+