フォーラム | 最新のWeb開発のチュートリアル
 

wxPython描画API


GDI &プラス。 (Graphics Drawing Interface)CoreGraphicsとCairo libraries wxPythonのにAPIを描くフレームワークを形成します。 wx.GraphicsContextは、様々なデバイスコンテキストオブジェクトが作成された使用、プライマリ描画可能なオブジェクトです。

wx.DCは抽象クラスです。 その派生クラスは、異なるデバイス上のグラフィックスとテキストのレンダリングに使用されています。 デバイスコンテキストクラスがあります -

  • wx.ScreenDC -個々の窓とは反対に、画面上にペイントするために使用します。

  • wx.ClientDC -ウィンドウのクライアント領域にペイントするために使用します(the part without borders and other decorations)が、wxPaintEvent内からそれを使用しないでください。

  • wx.PaintDC -しかし、ウィンドウのクライアント領域にペイントするために使用しますonly wxPaintEvent内から。

  • wx.WindowDC -装飾を含め、窓の全領域をペイントするために使用します。 これは、Windows以外のプラットフォーム上で利用できない場合があります。

wxPythonのの描画APIは、形状、テキストや画像を描画するためのさまざまな機能を提供しています。 色、ペン、ブラシやフォントなどの目的を描画するために必要なオブジェクトは、また、GDIクラスを使用して構築することができます。


wx.Colourクラス

カラーオブジェクトは、RGBの組み合わせを表し(RED, Green and Blue)の強度値、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クラス

ブラシなど矩形、楕円、円などの図形の背景を埋めるために必要な他の基本グラフィックオブジェクトであります

カスタムブラシオブジェクトは、wx.Colourとブラシスタイルパラメータが必要です。 以下は、定義済みブラシスタイルのリストです -

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オブジェクトbeween線を描画します

5

DrawBitmap()

所定の位置に画像を描画します

6

DrawText()

指定された位置に指定したテキストを表示します

上記の機能は、ペン、ブラシ、色、フォントオブジェクトを利用して、以下の実施例において実現されます。

次のように完全なコードがあります -

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

上記のコードは、次の出力を生成します -

デモを描きます