def draw_ticks(self, painter):
w = self.width()
h = self.height()
tick_step = int(round(w / self._ticks))
f1 = int(((w / float(self._ticks*1000)) * self._transitions[0]*1000))
f2 = int(((w / float(self._ticks*1000)) * self._transitions[1]*1000))
# the contract indicator window
painter.setPen(QtGui.QColor(0, 0, 0, 0))
painter.setBrush(QtGui.QColor(180, 80, 80, 140))
painter.drawRect(f1, 0, f2-f1, h)
painter.setPen(self.palette.color(QtGui.QPalette.Text))
painter.setFont(self.font())
# draw the "contact" and "rest" text
for t, l in zip(self._transitions, ['contract', 'rest']):
x = int(((w / float(self._ticks*1000)) * (t*1000.)))
metrics = painter.fontMetrics()
fw = metrics.width(l)
painter.drawText(x-fw/2, h/2, l)
# draw the ticks marking each second
j = 0
for i in range(tick_step, self._ticks*tick_step, tick_step):
painter.drawLine(i, h-5, i, h)
metrics = painter.fontMetrics()
fw = metrics.width(self.tick_labels[j])
painter.drawText(i-fw/2, h-7, self.tick_labels[j])
j += 1
评论列表
文章目录