Python源码示例:PyQt5.QtGui.QPainter()
示例1
def _paint_frame(self, event):
if self.bgimage:
pixmap = self._build_pixmap(self.bgimage)
# Check we need to resize the bgimage
if self.bgsize:
bgsize = self.bgsize
if self.bgsize == 'fit':
bgsize = self.size()
pixmap = pixmap.scaled(bgsize, Qt.KeepAspectRatio, Qt.SmoothTransformation)
# Calculate the x,y position
x,y = self.bgpos
if self.bgpos:
if x == 'left': x = 0
elif x == 'center': x = (self.width() / 2) - (pixmap.width() / 2)
elif x == 'right': x = self.width() - pixmap.width()
if y == 'top': y = 0
elif y == 'center': y = (self.height() / 2) - (pixmap.height() / 2)
elif y == 'bottom': y = self.height() - pixmap.height()
# Draw the pixmap
painter = QtGui.QPainter(self)
painter.setOpacity(self.bgopacity)
painter.drawPixmap(int(x), int(y), pixmap)
示例2
def highligting(self, color, underline_width):
color = QColor(color)
color = QColor(color.red(), color.green(), color.blue(), 200)
painter = QPainter(self)
if config.hover_underline:
font_metrics = QFontMetrics(self.font())
text_width = font_metrics.width(self.word)
text_height = font_metrics.height()
brush = QBrush(color)
pen = QPen(brush, underline_width, Qt.SolidLine, Qt.RoundCap)
painter.setPen(pen)
if not self.skip:
painter.drawLine(0, text_height - underline_width, text_width, text_height - underline_width)
if config.hover_hightlight:
x = y = 0
y += self.fontMetrics().ascent()
painter.setPen(color)
painter.drawText(x, y + config.outline_top_padding - config.outline_bottom_padding, self.word)
示例3
def paintEvent(self, event):
QtWidgets.QFrame.paintEvent(self, event)
painter = QtGui.QPainter()
painter.begin(self)
painter.setRenderHint(QtGui.QPainter.Antialiasing)
painter.setPen(Qt.NoPen)
# Draw the Pie
rwidth = int(min([self.width(), self.height()]) - 2)
x = int((self.width() / 2) - (rwidth / 2))
y = int((self.height() / 2) - (rwidth / 2))
rect = QtCore.QRect(x, y, rwidth, rwidth)
angle1 = 0
for i in range(len(self.data)):
angle2 = angle1 + (3.6 * self.data[i])
painter.setBrush(QtGui.QBrush(self.colors[i % len(self.colors)]))
painter.drawPie(rect, angle1*-16, (angle2-angle1)*-16)
angle1 = angle2
# Draw the remainer (background)
angle2 = 360
painter.setBrush(QtGui.QBrush(self.bgcolor))
painter.drawPie(rect, angle1*-16, (angle2-angle1)*-16)
painter.end()
示例4
def paintEvent(self, event):
if not self.data: return
QtWidgets.QFrame.paintEvent(self, event)
painter = QtGui.QPainter()
painter.begin(self)
painter.setRenderHint(QtGui.QPainter.Antialiasing)
# Draw background
painter.setBrush(QtGui.QBrush(self.bgcolor))
painter.setPen(Qt.NoPen)
painter.drawRoundedRect(self.contentsRect(), 2, 2)
# Draw the bars
barwidth = (self.width() - 4) / len(self.data)
for i in range(len(self.data)):
barheight = int(self.height() * (self.data[i] / 100))
baroffset = i * barwidth + 2
painter.setBrush(QtGui.QBrush(self.colors[i % len(self.colors)]))
painter.drawRoundedRect(baroffset, self.height()-barheight, barwidth, barheight, 1, 1)
painter.end()
示例5
def draw(self, refresh=False):
if self.dataModel.getOffset() in self.Paints:
self.refresh = False
self.qpix = QtGui.QPixmap(self.Paints[self.dataModel.getOffset()])
self.drawAdditionals()
return
if self.refresh or refresh:
qp = QtGui.QPainter()
qp.begin(self.qpix)
self.drawTextMode(qp)
self.refresh = False
qp.end()
# self.Paints[self.dataModel.getOffset()] = QtGui.QPixmap(self.qpix)
self.drawAdditionals()
示例6
def drawAdditionals(self):
self.newPix = self._getNewPixmap(self.width, self.height + self.SPACER)
qp = QtGui.QPainter()
qp.begin(self.newPix)
qp.setWindow(-50, 0, self.COLUMNS * self.fontWidth, self.ROWS * self.fontHeight)
qp.drawPixmap(0, 0, self.qpix)
# self.transformationEngine.decorateText()
# highlight selected text
self.selector.highlightText()
# draw other selections
self.selector.drawSelections(qp)
# draw our cursor
self.drawCursor(qp)
self.drawBranch(qp)
self.drawSelected(qp)
qp.end()
示例7
def draw(self, refresh=False):
if self.dataModel.getOffset() in self.Paints:
self.refresh = False
self.qpix = QtGui.QPixmap(self.Paints[self.dataModel.getOffset()])
self.drawAdditionals()
return
if self.refresh or refresh:
qp = QtGui.QPainter()
qp.begin(self.qpix)
self.drawTextMode(qp)
self.refresh = False
qp.end()
self.drawAdditionals()
示例8
def drawAdditionals(self):
self.newPix = self._getNewPixmap(self.width, self.height + self.SPACER)
qp = QtGui.QPainter()
qp.begin(self.newPix)
qp.setWindow(-50, 0, self.COLUMNS * self.fontWidth, self.ROWS * self.fontHeight)
qp.drawPixmap(0, 0, self.qpix)
# self.transformationEngine.decorateText()
# highlight selected text
self.selector.highlightText()
# draw other selections
self.selector.drawSelections(qp)
# draw our cursor
self.drawCursor(qp)
self.drawLine(qp)
qp.end()
示例9
def drawAdditionals(self):
self.newPix = self._getNewPixmap(self.width, self.height + self.SPACER)
qp = QtGui.QPainter()
qp.begin(self.newPix)
qp.drawPixmap(0, 0, self.qpix)
# self.transformationEngine.decorateText()
# highlight selected text
self.selector.highlightText()
# draw other selections
self.selector.drawSelections(qp)
# draw our cursor
self.drawCursor(qp)
# draw dword lines
for i in range(self.COLUMNS // 4)[1:]:
xw = i * 4 * 3 * self.fontWidth - 4
qp.setPen(QtGui.QColor(0, 255, 0))
qp.drawLine(xw, 0, xw, self.ROWS * self.fontHeight)
qp.end()
示例10
def draw(self):
qp = QtGui.QPainter()
offset = self.viewMode.getPageOffset()
columns, rows = self.viewMode.getGeometry()
qp.begin(self.qpix)
qp.fillRect(0, 0, self.width, self.height, self.backgroundBrush)
qp.setPen(self.textPen)
qp.setFont(self.font)
for i in range(rows):
s = '{0:08x}'.format(offset)
qp.drawText(0 + 5, (i + 1) * self.fontHeight, s)
columns = self.viewMode.getColumnsbyRow(i)
offset += columns
qp.end()
示例11
def draw(self):
# i don't really like this in terms of arhitecture. We have
# artificially introduced getHeaderInfo() in Views. Then we had one top
# banner implemented per plugin. I will think to a better solution
qp = QtGui.QPainter()
qp.begin(self.qpix)
qp.fillRect(0, 0, self.width, self.height, self.backgroundBrush)
qp.setPen(self.textPen)
qp.setFont(self.font)
cemu = ConsoleEmulator(qp, self.height // self.fontHeight, self.width // self.fontWidth)
cemu.writeAt(1, 0, 'FileAddr')
offset = 11
text = self.viewMode.getHeaderInfo()
cemu.writeAt(offset, 0, text)
qp.end()
示例12
def drawAdditionals(self):
self.newPix = self._getNewPixmap(self.width, self.height + self.SPACER)
qp = QtGui.QPainter()
qp.begin(self.newPix)
qp.drawPixmap(0, 0, self.qpix)
# self.transformationEngine.decorateText()
# highlight selected text
self.selector.highlightText()
# draw other selections
self.selector.drawSelections(qp)
# draw our cursor
self.drawCursor(qp)
qp.end()
示例13
def draw(self, refresh=False, row=0, howMany=0):
if self.dataModel.getOffset() in self.Paints:
self.refresh = False
self.qpix = QtGui.QPixmap(self.Paints[self.dataModel.getOffset()])
self.drawAdditionals()
return
if self.refresh or refresh:
qp = QtGui.QPainter()
qp.begin(self.qpix)
start = time()
if not howMany:
howMany = self.ROWS
self.drawTextMode(qp, row=row, howMany=howMany)
end = time() - start
log.debug('draw Time ' + str(end))
self.refresh = False
qp.end()
# self.Paints[self.dataModel.getOffset()] = QtGui.QPixmap(self.qpix)
self.drawAdditionals()
示例14
def drawBackground(self, pixmap):
"""Draw background in pixmap.
"""
w, h = pixmap.width(), pixmap.height()
mode = self.__bgModes[self.bgCBox.currentIndex()]
source = QPixmap(pixmap)
painter = QtGui.QPainter(pixmap)
if mode == self.BG_COLOR:
painter.fillRect(0, 0, w, h, self.bgColor)
if mode == self.BG_TRANSPARENT or mode == self.BG_IMAGE or mode == self.BG_INPUT:
painter.drawPixmap(0, 0, common.checkerboard(pixmap.size()))
if mode == self.BG_IMAGE and self.bgPath:
bgPixmap = QPixmap(self.bgPath)
if not bgPixmap.isNull():
bgPixmap = bgPixmap.scaled(w, h, QtCore.Qt.IgnoreAspectRatio)
painter.drawPixmap(0, 0, bgPixmap)
if mode == self.BG_INPUT:
painter.drawPixmap(0, 0, source)
示例15
def paintEvent(self, evt: QPaintEvent):
if not self.psuedo_line:
self.psuedo_line = 1
return
x = y = 0
y += self.fontMetrics().ascent()
painter = QPainter(self)
self.draw_text_n_outline(
painter,
x,
y + config.outline_top_padding - config.outline_bottom_padding,
config.outline_thickness,
config.outline_blur,
text = self.line
)
示例16
def paintEvent(self, e):
qp = QtGui.QPainter()
qp.begin(self)
qp.setOpacity(1)
offsetLeft = self.offsetWindow_h + self.Banners.getLeftOffset()
offsetBottom = self.offsetWindow_v + self.Banners.getTopOffset()
#self.viewMode.draw2(qp, refresh=True)
#start = time()
qp.drawPixmap(offsetLeft, offsetBottom, self.viewMode.getPixmap())
#print 'Draw ' + str(time() - start)
self.Banners.draw(qp, self.offsetWindow_h, self.offsetWindow_v, self.size().height())
# qp.drawPixmap(self.offsetWindow_h, self.size().height() - 50, self.banner.getPixmap())
# qp.drawPixmap(20, 0, self.filebanner.getPixmap())
qp.end()
示例17
def draw(self, refresh=False):
if self.dataModel.getOffset() in self.Paints:
self.refresh = False
self.qpix = QtGui.QPixmap(self.Paints[self.dataModel.getOffset()])
#print 'hit'
self.drawAdditionals()
return
if self.refresh or refresh:
qp = QtGui.QPainter()
qp.begin(self.qpix)
# viewport
#qp.fillRect(0, 0, self.COLUMNS * self.fontWidth, self.ROWS * self.fontHeight, self.backgroundBrush)
#start = time()
self.drawTextMode(qp)
#end = time() - start
#print 'Time ' + str(end)
self.refresh = False
qp.end()
# self.Paints[self.dataModel.getOffset()] = QtGui.QPixmap(self.qpix)
self.drawAdditionals()
示例18
def drawAdditionals(self):
self.newPix = self._getNewPixmap(self.width, self.height + self.SPACER)
qp = QtGui.QPainter()
qp.begin(self.newPix)
qp.drawPixmap(0, 0, self.qpix)
#self.transformationEngine.decorateText()
# highlight selected text
self.selector.highlightText()
# draw other selections
self.selector.drawSelections(qp)
# draw our cursor
self.drawCursor(qp)
# draw dword lines
for i in range(self.COLUMNS//4)[1:]:
xw = i*4*3*self.fontWidth - 4
qp.setPen(QtGui.QColor(0, 255, 0))
qp.drawLine(xw, 0, xw, self.ROWS*self.fontHeight)
qp.end()
示例19
def draw(self):
# i don't really like this in terms of arhitecture. We have
# artificially introduced getHeaderInfo() in Views. Then we had one top
# banner implemented per plugin. I will think to a better solution
qp = QtGui.QPainter()
qp.begin(self.qpix)
qp.fillRect(0, 0, self.width, self.height, self.backgroundBrush)
qp.setPen(self.textPen)
qp.setFont(self.font)
cemu = ConsoleEmulator(qp, self.height//self.fontHeight, self.width//self.fontWidth)
cemu.writeAt(1, 0, 'FileAddr')
offset = 11
text = self.viewMode.getHeaderInfo()
cemu.writeAt(offset, 0, text)
qp.end()
示例20
def drawAdditionals(self):
self.newPix = self._getNewPixmap(self.width, self.height + self.SPACER)
qp = QtGui.QPainter()
qp.begin(self.newPix)
qp.drawPixmap(0, 0, self.qpix)
#self.transformationEngine.decorateText()
# highlight selected text
self.selector.highlightText()
# draw other selections
self.selector.drawSelections(qp)
# draw our cursor
self.drawCursor(qp)
qp.end()
示例21
def draw(self, refresh=False, row=0, howMany=0):
if self.dataModel.getOffset() in self.Paints:
self.refresh = False
self.qpix = QtGui.QPixmap(self.Paints[self.dataModel.getOffset()])
#print 'hit'
self.drawAdditionals()
return
if self.refresh or refresh:
qp = QtGui.QPainter()
qp.begin(self.qpix)
#start = time()
if not howMany:
howMany = self.ROWS
self.drawTextMode(qp, row=row, howMany=howMany)
#end = time() - start
#print 'Time ' + str(end)
self.refresh = False
qp.end()
# self.Paints[self.dataModel.getOffset()] = QtGui.QPixmap(self.qpix)
self.drawAdditionals()
示例22
def draw(self):
qp = QtGui.QPainter()
displayType = self.plugin.getAddressMode()
if displayType == 'MemAddr':
offset = 0x7c00 + self.viewMode.getPageOffset()
else:
offset = self.viewMode.getPageOffset()
columns, rows = self.viewMode.getGeometry()
qp.begin(self.qpix)
qp.fillRect(0, 0, self.width, self.height, self.backgroundBrush)
qp.setPen(self.textPen)
qp.setFont(self.font)
for i in range(rows):
s = '{0:08x}'.format(offset)
qp.drawText(0+5, (i+1) * self.fontHeight, s)
columns = self.viewMode.getColumnsbyRow(i)
offset += columns
qp.end()
示例23
def __init__(self, parent=None, ui_widget=None, home=None, window=None, logr=None):
global ui, MainWindow, logger
QtWidgets.QSystemTrayIcon.__init__(self, parent)
ui = parent
MainWindow = window
logger = logr
icon_img = os.path.join(home, 'src', 'tray.png')
self.right_menu = RightClickMenuIndicator(ui_widget=ui_widget,
window=window, logr=logr)
self.setContextMenu(self.right_menu)
self.activated.connect(self.onTrayIconActivated)
self.p = QtGui.QPixmap(24, 24)
self.p.fill(QtGui.QColor("transparent"))
painter = QtGui.QPainter(self.p)
if os.path.exists(icon_img):
self.setIcon(QtGui.QIcon(icon_img))
else:
self.setIcon(QtGui.QIcon(""))
self.full_scr = 1
del painter
示例24
def paintEvent(self, event):
painter = QPainter(self)
# Draw backboard
for x in range(BOARD_DATA.width):
for y in range(BOARD_DATA.height):
val = BOARD_DATA.getValue(x, y)
drawSquare(painter, x * self.gridSize, y * self.gridSize, val, self.gridSize)
# Draw current shape
for x, y in BOARD_DATA.getCurrentShapeCoord():
val = BOARD_DATA.currentShape.shape
drawSquare(painter, x * self.gridSize, y * self.gridSize, val, self.gridSize)
# Draw a border
painter.setPen(QColor(0x777777))
painter.drawLine(self.width()-1, 0, self.width()-1, self.height())
painter.setPen(QColor(0xCCCCCC))
painter.drawLine(self.width(), 0, self.width(), self.height())
示例25
def paintEvent(self, event):
if self.count():
QtWidgets.QTabWidget.paintEvent(self, event)
else:
painter = QtGui.QPainter(self)
rect = event.rect()
image = QtGui.QImage("images/pychemqt.png")
rectImage = QtCore.QRect(25, rect.center().y()-50, 100, 100)
painter.drawImage(rectImage, image)
txt = QtWidgets.QApplication.translate(
"pychemqt", """Welcome to pychemqt,
a software for simulating Chemical Engineering units operations,
Copyright © 2012 Juan José Gómez Romera (jjgomera)
Licenced with GPL.v3
This software is distributed in the hope that it will be useful,
but without any warranty, it is provided "as is" without warranty of any kind
You can start by creating a new project or opening an existing project.""",
None)
rect.setLeft(150)
painter.drawText(rect, QtCore.Qt.AlignVCenter, txt)
示例26
def savePFDImage(self):
if self.filename[self.idTab]:
dir = os.path.dirname(str(self.filename[self.idTab]))
else:
dir = "."
fname = QtWidgets.QFileDialog.getSaveFileName(
None,
QtWidgets.QApplication.translate("pychemqt", "Save PFD as image"),
dir, "Portable Network Graphics (*.png)")[0]
if fname:
rect = self.currentScene.sceneRect()
img = QtGui.QImage(
rect.width(), rect.height(),
QtGui.QImage.Format_ARGB32_Premultiplied)
p = QtGui.QPainter(img)
self.currentScene.render(p)
p.end()
img.save(fname)
示例27
def captureFrame(settings: QSettings, source: str, frametime: str, thumbsize: QSize=None,
external: bool=False) -> QPixmap:
if thumbsize is None:
thumbsize = VideoService.config.thumbnails['INDEX']
capres = QPixmap()
img = QTemporaryFile(os.path.join(QDir.tempPath(), 'XXXXXX.jpg'))
if img.open():
imagecap = img.fileName()
cmd = VideoService.findBackends(settings).ffmpeg
tsize = '{0:d}x{1:d}'.format(thumbsize.width(), thumbsize.height())
args = '-hide_banner -ss {frametime} -i "{source}" -vframes 1 -s {tsize} -y "{imagecap}"'.format(**locals())
proc = VideoService.initProc()
if proc.state() == QProcess.NotRunning:
proc.start(cmd, shlex.split(args))
proc.waitForFinished(-1)
if proc.exitStatus() == QProcess.NormalExit and proc.exitCode() == 0:
capres = QPixmap(imagecap, 'JPG')
if external:
painter = QPainter(capres)
painter.drawPixmap(0, 0, QPixmap(':/images/external.png', 'PNG'))
painter.end()
img.remove()
return capres
# noinspection PyBroadException
示例28
def paint(self, painter, option, widget):
"""
Paints the path
"""
painter.setRenderHint(QtGui.QPainter.Antialiasing)
painter.setClipRect(option.exposedRect)
if self.isSelected():
painter.setBrush(QtGui.QBrush(globals.theme.color('path_fill_s')))
painter.setPen(QtGui.QPen(globals.theme.color('path_lines_s'), 1 / 24 * globals.TileWidth))
else:
painter.setBrush(QtGui.QBrush(globals.theme.color('path_fill')))
painter.setPen(QtGui.QPen(globals.theme.color('path_lines'), 1 / 24 * globals.TileWidth))
painter.drawRoundedRect(self.RoundedRect, 4, 4)
painter.setFont(self.font)
margin = globals.TileWidth / 10
painter.drawText(QtCore.QRectF(margin, margin, globals.TileWidth / 2 - margin, globals.TileWidth / 2 - margin), Qt.AlignCenter,
str(self.pathid))
painter.drawText(QtCore.QRectF(margin, globals.TileWidth / 2, globals.TileWidth / 2 - margin, globals.TileWidth / 2 - margin),
Qt.AlignCenter, str(self.nodeid))
示例29
def paintEvent(self, event):
QtWidgets.QFrame.paintEvent(self, event)
painter = QtGui.QPainter()
painter.begin(self)
painter.setRenderHint(QtGui.QPainter.Antialiasing)
painter.setPen(Qt.NoPen)
if self.enabled: self.paint_slider_on(painter)
else: self.paint_slider_off(painter)
painter.end()
示例30
def paintEvent(self, event):
if not self.data: return
QtWidgets.QFrame.paintEvent(self, event)
painter = QtGui.QPainter()
painter.begin(self)
painter.setRenderHint(QtGui.QPainter.Antialiasing)
# Draw background
painter.setBrush(QtGui.QBrush(self.bgcolor))
painter.setPen(Qt.NoPen)
painter.drawRoundedRect(self.contentsRect(), 2, 2)
# Draw the Lines
for i in range(len(self.data[0])):
path = None
pen = QtGui.QPen(self.colors[i % len(self.colors)])
for j in range(len(self.data)):
value = self.data[j][i]
prevvalue = self.data[j-1][i]
if value == -1 or prevvalue == -1:
continue
if not self.showzero and value <= 0 and prevvalue <= 0:
continue
x1 = (self.pxperpt * (j - 0.5) + self.pxperpt / 4) - self.offset
x2 = (self.pxperpt * j + self.pxperpt / 4) - self.offset
y1 = self.height() - int((self.height() - 1) * (prevvalue / self.maxvalue))
y2 = self.height() - int((self.height() - 1) * (value / self.maxvalue))
path = path or QtGui.QPainterPath(QtCore.QPointF(x1,y1))
path.cubicTo(x1, y1, x1, y2, x2, y2)
if path:
painter.strokePath(path, pen)
painter.end()