示例#1
0
文件: view_wx.py 项目: jjdenis/Compy
 def __init__(self, canvas):
     self.canvas = canvas
     self.bitmaps = Bitmaps(wx.Bitmap)
     self.fm_color = None
示例#2
0
文件: view_wx.py 项目: jjdenis/Compy
class Pinta(object):

    def __init__(self, canvas):
        self.canvas = canvas
        self.bitmaps = Bitmaps(wx.Bitmap)
        self.fm_color = None

    def reset_canvas(self, fm_color, bg_color):
        self._set_deep_background(fm_color)
        self._set_background(bg_color)

    def poke(self, x, y, char_id, fg_color, bg_color):

        dcx, dcy = self.to_window_units(x, y)

        dc = wx.WindowDC(self.canvas)

        bmp = self.bitmaps.get_bitmap(char_id)

        dc.BeginDrawing()
        dc.SetTextForeground(fg_color)
        dc.SetTextBackground(bg_color)
        dc.DrawBitmap(bmp, dcx, dcy, useMask=False)
        dc.EndDrawing()
        self.canvas.Refresh()
        # self.point(0,10,'red')
        # self.point(0, 0,'red')
        # self.point(0, 20,'red')
        # self.point(30, 0,'green')

    def point(self, x, y, color):

        dcx = FRAME_PTS_X + x - 1
        dcy = TOTAL_CNVS_PTS_Y - FRAME_PTS_Y - (y + 1)

        dc = wx.WindowDC(self.canvas)

        dc.BeginDrawing()
        dc.SetPen(wx.Pen(color))
        dc.DrawPoint(dcx, dcy)
        dc.EndDrawing()
        self.canvas.Refresh()

    def to_window_units(self, x, y):
        dcx = FRAME_PTS_X + x * 16
        dcy = TOTAL_CNVS_PTS_Y - FRAME_PTS_Y - (y + 1) * 16
        return dcx, dcy

    def _set_deep_background(self, color):
        self.fm_color = color
        dc = wx.WindowDC(self.canvas)
        dc.BeginDrawing()
        dc.SetPen(wx.Pen(color, 1, wx.TRANSPARENT))
        dc.SetBrush(wx.Brush(color, wx.SOLID))
        dc.DrawRectangle(0, 0, TOTAL_CNVS_PTS_X, TOTAL_CNVS_PTS_Y)
        dc.EndDrawing()
        self.canvas.Refresh()

    def _set_background(self, color):
        dc = wx.WindowDC(self.canvas)
        dc.BeginDrawing()
        dc.SetPen(wx.Pen(color, 1, wx.TRANSPARENT))
        dc.SetBrush(wx.Brush(color, wx.SOLID))
        dc.DrawRectangle(FRAME_PTS_X, FRAME_PTS_Y,
                         ACTIVE_CNVS_PTS_X, ACTIVE_CNVS_PTS_Y)
        dc.EndDrawing()
        self.canvas.Refresh()