Wxpython-drawing-api
wxPython-描画API
*GDI* + (Graphics Drawing Interface)、 *CoreGraphics* 、および* Cairoライブラリ*は、wxPythonの描画APIのフレームワークを形成します。 wx.GraphicsContextは主要な描画可能オブジェクトであり、これを使用してさまざまなデバイスコンテキストオブジェクトが作成されます。
wx.DCは抽象クラスです。 その派生クラスは、さまざまなデバイスでグラフィックとテキストをレンダリングするために使用されます。 デバイスコンテキストクラスは-
- wx.ScreenDC -これを使用して、個々のウィンドウではなく、画面にペイントします。
- wx.ClientDC -これを使用してウィンドウのクライアント領域(境界線やその他の装飾のない部分)にペイントしますが、wxPaintEvent内からは使用しないでください。
- wx.PaintDC -これを使用して、ウィンドウのクライアント領域にペイントしますが、wxPaintEvent内からのみです。
- wx.WindowDC -これを使用して、装飾を含むウィンドウの領域全体にペイントします。 これは、Windows以外のプラットフォームでは利用できない場合があります。
wxPythonの描画APIは、形状、テキスト、画像を描画するためのさまざまな機能を提供します。 色、ペン、ブラシ、フォントなど、描画に必要なオブジェクトもGDIクラスを使用して構築できます。
wx.Colourクラス
Colorオブジェクトは、RGB(赤、緑、青)の強度値の組み合わせを表し、それぞれ0〜255のスケールです。 いくつかの定義済みの色オブジェクトがあります-
- wxBLACK
- wxBLUE
- wxCYAN
- wxGREEN
- wxYELLOW
- wxLIGHT_GREY
- wxRED
- wxWHITE
RGB値のカスタムの組み合わせを持つ色は、* wx.Colourオブジェクト*として形成されます。
wx.Colour(r,g,b)
wx.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クラス
ブラシは、長方形、楕円、円などの形状の背景を塗りつぶすために必要な別の基本的なグラフィックスオブジェクトです。
カスタム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には、さまざまな形状、テキスト、画像の描画を容易にする多数の機能があります。
S.N. | Functions & Description |
---|---|
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()
上記のコードは、次の出力を生成します-