Введение в PyCairo [Урок №1]

автор

Это учебный материал по PyCairo, с которым вы можете освоить как базовые, так и углубленные темы библиотеки Cairo 2D на языке Python. Для разработки будущих программ, в большей части примеров мы воспользуемся бэкэндом Python GTK. Изображения, используемые в данном учебном материале можно скачать здесь.

Компьютерная графика

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

Преимущества векторной графики над растровой заключаются в следующем:

  • Маленький размер;
  • Возможность масштабирования до бесконечности;
  • При перемещении, масштабировании, заполнении и вращении качество изображения не теряется.

Cairo

Cairo – это библиотека, используемая при создании 2D графики, написанная на языке программирования С. Библиотека также может работать в связке со следующими языками программирования, такими как Python, Perl, C++, C#, и Java. Cairo является мультиплатформенной библиотекой, работающей с такими ОС как Linux, BSDs, Windows и OSX. Cairo поддерживает различные бэкэнды, являющиеся средствами для отображения созданной графики.

  • X Window System
  • Win32 GDI
  • Mac OS X Quartz
  • PNG
  • PDF
  • PostScript
  • SVG

Это значит, что мы можем воспользоваться данной библиотекой для создания графики в Windows, Linux, OSX, а также создавать файлы в форматах PNG, PDF, PostScript, SVG. Caire можно сравнить с библиотекой GDI+ в Windows и Quartz 2D в Mac OS. Cairo является библиотекой с открытым исходным кодом. Начиная с версии 2.8, Cairo является частью системы GTK.

Установка

Debian/ubuntu:

Fedora

OpenSUSE

Подробнее как установить (Windows, Mac OS X): https://www.cairographics.org/download/

Терминология

В данном пункте мы приведем несколько ключевых определений и терминов. Для создания изображения в PyCairo, первым делом нам нужно создать контекст рисунка (drawing context). Контекст рисунка включает в себя все параметры, описывающие то, как именно изображение должно быть выполнено. Это включает в себя такие параметры, как ширина линии, цвет, параметры поверхности и многое другое. Это позволяет использовать меньшее количество аргументов для упрощения интерфейса.

  • Контур (path) представлен в виде наборов точек для создания примитивных геометрических фигур, таких как линии, кривые и дуги. Существует два вида контуров: открытые и закрытые. В закрытых контурах начальные и конечные точки не пересекаются. В PyCairo мы начинаем с пустого контура. В первую очередь, мы определяем будущий контур, сглаживаем и\или заполняем его. После каждой строки stroke()or fill() контур становится пустым и мы можем сформировать новый. Если нам нужно сохранить уже существующий контур для дальнейшего рисования, мы можем воспользоваться командами stroke_preserve() и fill_preserve(). Контур состоит из подконтуров;
  • Source (исходник) — это инструменты, которые мы используем при рисовании. Это можно сравнить с карандашом или ручкой, которые мы используем при заполнении контуров и рисовании фигур. Существует четыре вида базовых исходников: цвета, градиенты, узоры и изображения;
  • Поверхность (surface) – пространство, в котором выполняется рисование. Мы можем выполнять рендеринг файлов, пользуясь поверхностями PDF или PostScript. Для рисования непосредственно на платформе, применяются поверхности Win32 и Xlib;
    Перед началом рисования на поверхности, исходник необходимо фильтровать. Mask (маска) используется в качестве фильтра. Она определяет, где будет или не будет применяться исходник. Непрозрачные части маски позволяют копировать исходник, прозрачные, в свою очередь, не позволяют копировать исходник на поверхность;
  • Шаблон (pattern) отображает исходник во время рисования на поверхности. В PyCairo, шаблон можно использовать в качестве исходника или маски при рисовании. Шаблоны могут быть градиентными, сплошными или поверхностными.

Вам может быть интересно

Scroll Up