wxPython-描画API
GDI+(グラフィックス描画インターフェース)、 CoreGraphics そして Cairo librarieswxPythonでAPIを描画するフレームワークを形成します。wx.GraphicsContextは、さまざまなデバイスコンテキストオブジェクトが作成される主要な描画可能オブジェクトです。
wx.DCは抽象クラスです。その派生クラスは、さまざまなデバイスでグラフィックスとテキストをレンダリングするために使用されます。デバイスコンテキストクラスは次のとおりです。
wx.ScreenDC −これを使用して、個々のウィンドウではなく、画面にペイントします。
wx.ClientDC −これを使用してウィンドウのクライアント領域(境界線やその他の装飾のない部分)にペイントしますが、wxPaintEvent内からは使用しないでください。
wx.PaintDC-これを使用しますが、ウィンドウのクライアント領域にペイントするだけwxPaintEvent内から。
wx.WindowDC−これを使用して、装飾を含むウィンドウの全領域にペイントします。これは、Windows以外のプラットフォームでは使用できない場合があります。
wxPythonのDrawingAPIは、形状、テキスト、画像を描画するためのさまざまな関数を提供します。色、ペン、ブラシ、フォントなど、描画に必要なオブジェクトは、GDIクラスを使用して作成することもできます。
wx.Colourクラス
カラーオブジェクトは、RGB(赤、緑、青)の強度値の組み合わせを表し、それぞれ0〜255のスケールで表示されます。−のようないくつかの事前定義されたカラーオブジェクトがあります
- wxBLACK
 - wxBLUE
 - wxCYAN
 - wxGREEN
 - wxYELLOW
 - wxLIGHT_GREY
 - wxRED
 - wxWHITE
 
RGB値のカスタム組み合わせによる色は次のように形成されます wx.Colour object。
wx.Colour(r,g,b) 
    wx.Penクラス
ペンオブジェクトは、線、長方形、円などのグラフィックの形状の色、幅、スタイルを決定します。
Predefined Pen objects は−
| 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 | 
Predefined Pen styles は−
| wx.SOLID | 
| wx.DOT | 
| wx.LONG_DASH | 
| wx.SHORT_DASH | 
| wx.DOT_DASH | 
| wx.TRANSPARENT | 
wx.Brushクラス
ブラシは、長方形、楕円、円などの形状の背景を塗りつぶすために必要なもう1つの基本的なグラフィックオブジェクトです。
カスタム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() 2つのwx.Pointオブジェクトの間に線を描画します  |  
      
| 5 | DrawBitmap() 指定された位置に画像を描画します  |  
      
| 6 | 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() 
    上記のコードは次の出力を生成します-