示例#1
0
 def on_paint(self, ev):
     painter = Painter(self)
     painter.draw_bitmap(0, 0, self.im)
     for i, icon in enumerate(self.icons):
         x = ICON_MARGIN
         y = ICON_MARGIN + i * (ICON_SIZE + ICON_MARGIN)
         if i == self.cur_icon:
             rc = Rect(x, y, ICON_SIZE, ICON_SIZE)
             dx = ICON_SIZE / 10
             rc.adjust(-dx, -dx, dx, dx)
             painter.fill_rect(rc, SteelBlue)
         painter.draw_bitmap(x, y, icon)
示例#2
0
    def on_system_paint(self, ev):
        bitmap = self.bitmap
        painter = Painter(self.bitmap)
        border = self.border_width()
        width = self.window_width()
        height = self.window_height()
        caption_color = SteelBlue if self.active() else LightSteelBlue
        border_color = 0xaaffffff & caption_color
        if self.attr() & WND_TRANSPARENT:
            painter.clear()
        else:
            painter.fill_rect(self.margin_left(), self.margin_top(),
                              self.width(), self.height(), White)
        if self.attr() & WND_FRAME:
            rc = Rect(0, 0, self.window_width() - 1, self.window_height() - 1)
            max_alpha = 40 if self.active() else 20
            dalpha = max_alpha / DEFAULT_BORDER_WIDTH
            for i in xrange(DEFAULT_BORDER_WIDTH - 1):
                painter.set_pen_color(i * dalpha << 24)
                painter.draw_rect(rc)
                rc.adjust(1, 1, -1, -1)
            painter.set_pen_color(caption_color)
            painter.draw_rect(rc)
        if self.attr() & WND_CAPTION:
            # fill caption
            caption_color &= 0xddffffff
            caption_rc = Rect(border, border, width - 2 * border,
                              self.caption_height())
            painter.fill_rect(rc, caption_color)

            # draw title
            painter.set_pen_color(White)
            rc = caption_rc.translated(10, 0)
            painter.draw_text(rc, Painter.AlignLeft | Painter.AlignVCenter,
                              self.title_)

            # draw close/maximize/minimize
            painter.save()
            painter.set_pen_color(DarkWhite)
            painter.set_render_hint(Painter.Antialiasing)
            # close
            painter.set_pen_width(2)
            rc = Rect(self.close_rect())
            painter.draw_line(rc.top_left(), rc.bottom_right())
            painter.draw_line(rc.top_right(), rc.bottom_left())
            # maximize
            painter.draw_rect(Rect(self.maximize_rect()))
            # minimize
            rc = Rect(self.minimize_rect())
            painter.draw_line(rc.bottom_left(), rc.bottom_right())
            painter.restore()