Работа с графикой (C++/CLI)

демонстрируется обработка изображений с помощью Windows SDK.

В следующих разделах демонстрируется использование System.Drawing.Image класса для выполнения манипуляций с изображениями.

отображение изображений с помощью платформа .NET Framework

В следующем примере кода обработчик событий onpain изменяется для получения указателя на Graphics объект главной формы. OnPaintфункция предназначена для Windows Forms приложения, которая, скорее всего, создается с помощью мастера Visual Studio приложений.

Изображение представлено Image классом. Данные изображения загружаются из файла .jpg с помощью System.Drawing.Image.FromFile метода. Перед прорисовкой изображения в форму размер формы изменяется в соответствии с изображением. Рисование изображения выполняется с помощью System.Drawing.Graphics.DrawImage метода.

GraphicsКлассы и Image находятся в System.Drawing пространстве имен.

Пример

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

рисование фигур с помощью платформа .NET Framework

В следующем примере кода класс используется Graphics для изменения OnPaint обработчика событий, чтобы получить указатель на Graphics объект для главной формы. Затем этот указатель используется для задания цвета фона формы и рисования линии и дуги с помощью System.Drawing.Graphics.DrawLine методов и DrawArc .

Пример

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

вращение изображений с помощью платформа .NET Framework

В следующем примере кода показано использование System.Drawing.Image класса для загрузки изображения с диска, вращения его 90 градусов и сохранения в виде нового файла .jpg.

Пример

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

преобразование форматов файлов изображений с помощью платформа .NET Framework

В следующем примере кода демонстрируется System.Drawing.Image класс и System.Drawing.Imaging.ImageFormat перечисление, используемое для преобразования и сохранения файлов изображений. Следующий код загружает изображение из файла .jpg, а затем сохраняет его как в .gif, так и в .bmpном формате.

Пример

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

Приступая к программированию графики

Управляемый код GDI+

См. также

Программирование .NET с использованием C++/CLI (Visual C++)

System.Drawing