GDI & plus; (Интерфейс графического рисования), библиотеки CoreGraphics и Cairo составляют основу API рисования в wxPython. wx.GraphicsContext — это основной рисуемый объект, с помощью которого создаются различные объекты Device Context.
wx.DC — абстрактный класс. Его производные классы используются для визуализации графики и текста на разных устройствах. Классы Device Context являются —
-
wx.ScreenDC — Используйте это, чтобы рисовать на экране, в отличие от отдельного окна.
-
wx.ClientDC — Используйте это, чтобы рисовать в клиентской области окна (часть без границ и других украшений), но не используйте его изнутри wxPaintEvent.
-
wx.PaintDC — Используйте это, чтобы рисовать в клиентской области окна, но только изнутри wxPaintEvent.
-
wx.WindowDC — Используйте это, чтобы рисовать на всей области окна, включая украшения. Это может быть недоступно на платформах, отличных от Windows.
wx.ScreenDC — Используйте это, чтобы рисовать на экране, в отличие от отдельного окна.
wx.ClientDC — Используйте это, чтобы рисовать в клиентской области окна (часть без границ и других украшений), но не используйте его изнутри wxPaintEvent.
wx.PaintDC — Используйте это, чтобы рисовать в клиентской области окна, но только изнутри wxPaintEvent.
wx.WindowDC — Используйте это, чтобы рисовать на всей области окна, включая украшения. Это может быть недоступно на платформах, отличных от Windows.
API рисования wxPython предлагает различные функции для рисования формы, текста и изображения. Объекты, необходимые для рисования, такие как Color, Pen, Brush и Font, также могут быть построены с использованием классов GDI.
wx.Colour Class
Цветовой объект представляет собой комбинацию значений интенсивности RGB (красный, зеленый и синий), каждое по шкале 0-255. Есть несколько предопределенных цветовых объектов, таких как —
- wxBLACK
- wxBLUE
- wxCYAN
- wxGREEN
- wxYELLOW
- wxLIGHT_GREY
- wxRED
- wxWHITE
Цвет с пользовательской комбинацией значений RGB формируется как объект wx.Colour .
wx.Colour(r,g,b)
wx.Pen Class
Объект пера определяет цвет, ширину и стиль формы графики, такой как линия, прямоугольник, круг и т. Д.
Предопределенные объекты Pen —
wxBLACK_DASHED_PEN |
wxBLACK_PEN |
wxBLUE_PEN |
wxCYAN_PEN |
wxGREEN_PEN |
wxYELLOW_PEN |
wxGREY_PEN |
wxLIGHT_GREY_PEN |
wxMEDIUM_GREY_PEN |
wxRED_PEN |
wxTRANSPARENT_PEN |
wxWHITE_PEN |
Предопределенные стили пера —
wx.SOLID |
wx.DOT |
wx.LONG_DASH |
wx.SHORT_DASH |
wx.DOT_DASH |
wx.TRANSPARENT |
Wx.Brush Class
Кисть — это еще один элементарный графический объект, необходимый для заливки фона таких фигур, как прямоугольник, эллипс, круг и т. Д.
Для пользовательского объекта Brush требуются параметры стиля wx.Colour и Brush. Ниже приведен список предопределенных стилей кисти —
wx.SOLID |
wx.STIPPLE |
wx.BDIAGONAL_HATCH |
wx.CROSSDIAG_HATCH |
wx.FDIAGONAL_HATCH |
wx.CROSS_HATCH |
wx.HORIZONTAL_HATCH |
wx.VERTICAL_HATCH |
wx.TRANSPARENT |
wxPython имеет ряд функций, которые облегчают рисование различных форм, текста и изображения.
SN | Функции и описание |
---|---|
1 |
DrawRectangle () Рисует прямоугольник заданных размеров |
2 |
DrawCircle () Рисует круг в данной точке как центр и радиус |
3 |
DrawEllipse () Рисует эллипс с заданным радиусом x и y |
4 |
DrawLine () Рисует линию между двумя объектами wx.Point |
5 |
DrawBitmap () Нарисуйте изображение в заданной позиции |
6 |
DrawText () Отображает данный текст в указанной позиции |
DrawRectangle ()
Рисует прямоугольник заданных размеров
DrawCircle ()
Рисует круг в данной точке как центр и радиус
DrawEllipse ()
Рисует эллипс с заданным радиусом x и y
DrawLine ()
Рисует линию между двумя объектами wx.Point
DrawBitmap ()
Нарисуйте изображение в заданной позиции
DrawText ()
Отображает данный текст в указанной позиции
пример
Вышеуказанные функции реализованы в следующем примере с использованием объектов Pen, Brush, Color и Font.
Полный код выглядит следующим образом —
import wx class Mywin(wx.Frame): def __init__(self, parent, title): super(Mywin, self).__init__(parent, title = title,size = (500,300)) self.InitUI() def InitUI(self): self.Bind(wx.EVT_PAINT, self.OnPaint) self.Centre() self.Show(True) def OnPaint(self, e): dc = wx.PaintDC(self) brush = wx.Brush("white") dc.SetBackground(brush) dc.Clear() dc.DrawBitmap(wx.Bitmap("python.jpg"),10,10,True) color = wx.Colour(255,0,0) b = wx.Brush(color) dc.SetBrush(b) dc.DrawCircle(300,125,50) dc.SetBrush(wx.Brush(wx.Colour(255,255,255))) dc.DrawCircle(300,125,30) font = wx.Font(18, wx.ROMAN, wx.ITALIC, wx.NORMAL) dc.SetFont(font) dc.DrawText("Hello wxPython",200,10) pen = wx.Pen(wx.Colour(0,0,255)) dc.SetPen(pen) dc.DrawLine(200,50,350,50) dc.SetBrush(wx.Brush(wx.Colour(0,255,0), wx.CROSS_HATCH)) dc.DrawRectangle(380, 15, 90, 60) ex = wx.App() Mywin(None,'Drawing demo') ex.MainLoop()
Приведенный выше код производит следующий вывод —