Практическое руководство. Создание объектов Graphics для рисования

Перед тем, как начать заниматься рисованием линий и фигур, отрисовкой текста или отображением изображений и управления ими с помощью GDI+, необходимо создать объект Graphics. Объект Graphics представляет собой поверхность рисования GDI+ и используется для создания графических изображений.

Существует два этапа работы с графикой:

  1. Создание объекта Graphics.

  2. Использование объекта Graphics для рисования линий и фигур, отрисовки текста или отображения изображений и управления ими.

Создание графического объекта

Графический объект можно создать несколькими способами.

Как создать графический объект

  • Получите ссылку на графический объект как часть PaintEventArgs события формы или элемента управления Paint. Обычно ссылка на графический объект таким образом берется при создании кода рисования для элемента управления. Аналогичным образом можно также получить графический объект в качестве свойства PrintPageEventArgs при обработке события PrintPage для объекта PrintDocument.

    или

  • Вызовите метод элемента управления или формы CreateGraphics, чтобы получить ссылку на объект Graphics, представляющий собой область рисования этого элемента управления или формы. Используйте этот метод, если необходимо нарисовать на форме или элементе управления, которые уже существуют.

    или

  • Создайте объект Graphics из любого объекта, наследуемого от Image. Этот вариант подходит если вы хотите изменить уже существующее изображение.

    Необходимые действия будут более подробно описаны в следующих разделах.

PaintEventArgs в обработчике событий Paint

При программировании PaintEventHandler для элементов управления или PrintPage для объекта PrintDocument, графический объект предоставляется в качестве одного из свойств PaintEventArgs или PrintPageEventArgs.

Получение ссылки на графический объект из PaintEventArgs в событии Paint

  1. Объявите объект Graphics.

  2. Назначьте переменную для ссылки на объект Graphics, переданный как часть PaintEventArgs.

  3. Введите код, чтобы нарисовать форму или элемент управления.

    В следующем примере показано, как ссылаться на объект Graphics из PaintEventArgs в событии Paint :

    Private Sub Form1_Paint(sender As Object, pe As PaintEventArgs) Handles _  
       MyBase.Paint  
       ' Declares the Graphics object and sets it to the Graphics object  
       ' supplied in the PaintEventArgs.  
       Dim g As Graphics = pe.Graphics  
       ' Insert code to paint the form here.  
    End Sub  
    
    private void Form1_Paint(object sender,
       System.Windows.Forms.PaintEventArgs pe)
    {  
       // Declares the Graphics object and sets it to the Graphics object  
       // supplied in the PaintEventArgs.  
       Graphics g = pe.Graphics;  
       // Insert code to paint the form here.  
    }  
    
    private:  
       void Form1_Paint(System::Object ^ sender,  
          System::Windows::Forms::PaintEventArgs ^ pe)  
       {  
          // Declares the Graphics object and sets it to the Graphics object  
          // supplied in the PaintEventArgs.  
          Graphics ^ g = pe->Graphics;  
          // Insert code to paint the form here.  
       }  
    

Метод CreateGraphics

Также можно воспользоваться методом элемента управления или формы CreateGraphics, чтобы получить ссылку на объект Graphics, представляющий собой область рисования этого элемента управления или формы.

Создание графического объекта с помощью метода CreateGraphics

  • Вызовите метод CreateGraphics для формы или элемента управления, на которых требуется отрисовка графики.

    Dim g as Graphics  
    ' Sets g to a Graphics object representing the drawing surface of the  
    ' control or form g is a member of.  
    g = Me.CreateGraphics  
    
    Graphics g;  
    // Sets g to a graphics object representing the drawing surface of the  
    // control or form g is a member of.  
    g = this.CreateGraphics();  
    
    Graphics ^ g;  
    // Sets g to a graphics object representing the drawing surface of the  
    // control or form g is a member of.  
    g = this->CreateGraphics();  
    

Создание из объекта изображения

Кроме того, можно создать графический объект из любого объекта, производного от класса Image.

Как создать графический объект на основе изображения

  • Вызовите метод Graphics.FromImage, указав имя переменной изображения, из которой требуется создать объект Graphics.

    В приведенном ниже примере показано использование объекта Bitmap:

    Dim myBitmap as New Bitmap("C:\Documents and Settings\Joe\Pics\myPic.bmp")  
    Dim g as Graphics = Graphics.FromImage(myBitmap)  
    
    Bitmap myBitmap = new Bitmap(@"C:\Documents and
       Settings\Joe\Pics\myPic.bmp");  
    Graphics g = Graphics.FromImage(myBitmap);  
    
    Bitmap ^ myBitmap = gcnew  
       Bitmap("D:\\Documents and Settings\\Joe\\Pics\\myPic.bmp");  
    Graphics ^ g = Graphics::FromImage(myBitmap);  
    

Примечание.

Объекты Graphics можно создавать только из неиндексированных файлов формата .bmp, например 16-разрядных, 24-разрядных и 32-разрядных. Каждый пиксель неиндексированных файлов .bmp содержит цвет. В индексированных .bmp файлах же каждый пиксель содержит индекс таблицы цветов.

Рисование и обработка фигур и изображений

Объект Graphics после создания может использоваться для рисования линий и фигур, отрисовки текста или отображения изображений и управления ими. Вот основные объекты, которые используются с объектом Graphics:

  • Класс Pen — используется для рисования линий, структурирования фигур или отрисовки других геометрических представлений.

  • Класс Brush — используется для заполнения областей графики, в частности для заполненных фигур, изображений или текста.

  • Класс Font — предоставляет собой описание фигур, используемых при отрисовке текста.

  • Структура Color — представляет различные отображаемые цвета.

Использование созданного графического объекта

См. также