Учебники

wxPython — API рисования

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()

Приведенный выше код производит следующий вывод —