本文整理汇总了Python中pyqtcore.QVector.resize方法的典型用法代码示例。如果您正苦于以下问题:Python QVector.resize方法的具体用法?Python QVector.resize怎么用?Python QVector.resize使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pyqtcore.QVector
的用法示例。
在下文中一共展示了QVector.resize方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: MapScene
# 需要导入模块: from pyqtcore import QVector [as 别名]
# 或者: from pyqtcore.QVector import resize [as 别名]
#.........这里部分代码省略.........
if (self.mShowTileObjectOutlines == enabled):
return
self.mShowTileObjectOutlines = enabled
if (self.mMapDocument):
self.mMapDocument.renderer().setFlag(RenderFlag.ShowTileObjectOutlines, enabled)
if (not self.mObjectItems.isEmpty()):
self.update()
##
# Sets whether the current layer should be highlighted.
##
def setHighlightCurrentLayer(self, highlightCurrentLayer):
if (self.mHighlightCurrentLayer == highlightCurrentLayer):
return
self.mHighlightCurrentLayer = highlightCurrentLayer
self.updateCurrentLayerHighlight()
##
# Refreshes the map scene.
##
def refreshScene(self):
self.mLayerItems.clear()
self.mObjectItems.clear()
self.removeItem(self.mDarkRectangle)
self.clear()
self.addItem(self.mDarkRectangle)
if (not self.mMapDocument):
self.setSceneRect(QRectF())
return
self.updateSceneRect()
map = self.mMapDocument.map()
self.mLayerItems.resize(map.layerCount())
if (map.backgroundColor().isValid()):
self.setBackgroundBrush(map.backgroundColor())
else:
self.setBackgroundBrush(self.mDefaultBackgroundColor)
layerIndex = 0
for layer in map.layers():
layerItem = self.createLayerItem(layer)
layerItem.setZValue(layerIndex)
self.addItem(layerItem)
self.mLayerItems[layerIndex] = layerItem
layerIndex += 1
tileSelectionItem = TileSelectionItem(self.mMapDocument)
tileSelectionItem.setZValue(10000 - 2)
self.addItem(tileSelectionItem)
self.mObjectSelectionItem = ObjectSelectionItem(self.mMapDocument)
self.mObjectSelectionItem.setZValue(10000 - 1)
self.addItem(self.mObjectSelectionItem)
self.updateCurrentLayerHighlight()
##
# Repaints the specified region. The region is in tile coordinates.
##
def repaintRegion(self, region, layer):
renderer = self.mMapDocument.renderer()
margins = self.mMapDocument.map().drawMargins()
for r in region.rects():
boundingRect = QRectF(renderer.boundingRect(r))
self.update(QRectF(renderer.boundingRect(r).adjusted(-margins.left(),
-margins.top(),
margins.right(),
margins.bottom())))
示例2: CellRenderer
# 需要导入模块: from pyqtcore import QVector [as 别名]
# 或者: from pyqtcore.QVector import resize [as 别名]
#.........这里部分代码省略.........
def __init__(self, painter):
self.mPainter = painter
self.mTile = None
self.mIsOpenGL = hasOpenGLEngine(painter)
self.mFragments = QVector()
def __del__(self):
self.flush()
##
# Renders a \a cell with the given \a origin at \a pos, taking into account
# the flipping and tile offset.
#
# For performance reasons, the actual drawing is delayed until a different
# kind of tile has to be drawn. For this reason it is necessary to call
# flush when finished doing drawCell calls. This function is also called by
# the destructor so usually an explicit call is not needed.
##
def render(self, cell, pos, cellSize, origin):
if (self.mTile != cell.tile):
self.flush()
image = cell.tile.currentFrameImage()
size = image.size()
if cellSize == QSizeF(0,0):
objectSize = size
else:
objectSize = cellSize
scale = QSizeF(objectSize.width() / size.width(), objectSize.height() / size.height())
offset = cell.tile.offset()
sizeHalf = QPointF(objectSize.width() / 2, objectSize.height() / 2)
fragment = QPainter.PixmapFragment()
fragment.x = pos.x() + (offset.x() * scale.width()) + sizeHalf.x()
fragment.y = pos.y() + (offset.y() * scale.height()) + sizeHalf.y() - objectSize.height()
fragment.sourceLeft = 0
fragment.sourceTop = 0
fragment.width = size.width()
fragment.height = size.height()
if cell.flippedHorizontally:
fragment.scaleX = -1
else:
fragment.scaleX = 1
if cell.flippedVertically:
fragment.scaleY = -1
else:
fragment.scaleY = 1
fragment.rotation = 0
fragment.opacity = 1
flippedHorizontally = cell.flippedHorizontally
flippedVertically = cell.flippedVertically
if (origin == CellRenderer.BottomCenter):
fragment.x -= sizeHalf.x()
if (cell.flippedAntiDiagonally):
fragment.rotation = 90
flippedHorizontally = cell.flippedVertically
flippedVertically = not cell.flippedHorizontally
# Compensate for the swap of image dimensions
halfDiff = sizeHalf.y() - sizeHalf.x()
fragment.y += halfDiff
if (origin != CellRenderer.BottomCenter):
fragment.x += halfDiff
if flippedHorizontally:
x = -1
else:
x = 1
fragment.scaleX = scale.width() * x
if flippedVertically:
x = -1
else:
x = 1
fragment.scaleY = scale.height() * x
if (self.mIsOpenGL or (fragment.scaleX > 0 and fragment.scaleY > 0)):
self.mTile = cell.tile
self.mFragments.append(fragment)
return
# The Raster paint engine as of Qt 4.8.4 / 5.0.2 does not support
# drawing fragments with a negative scaling factor.
self.flush() # make sure we drew all tiles so far
oldTransform = self.mPainter.transform()
transform = oldTransform
transform.translate(fragment.x, fragment.y)
transform.rotate(fragment.rotation)
transform.scale(fragment.scaleX, fragment.scaleY)
target = QRectF(fragment.width * -0.5, fragment.height * -0.5, fragment.width, fragment.height)
source = QRectF(0, 0, fragment.width, fragment.height)
self.mPainter.setTransform(transform)
self.mPainter.drawPixmap(target, image, source)
self.mPainter.setTransform(oldTransform)
def flush(self):
if (not self.mTile):
return
self.mPainter.drawPixmapFragments(self.mFragments, self.mTile.currentFrameImage())
self.mTile = None
self.mFragments.resize(0)
示例3: drawGrid
# 需要导入模块: from pyqtcore import QVector [as 别名]
# 或者: from pyqtcore.QVector import resize [as 别名]
def drawGrid(self, painter, exposed, gridColor):
rect = exposed.toAlignedRect()
if (rect.isNull()):
return
p = RenderParams(self.map())
# Determine the tile and pixel coordinates to start at
startTile = self.screenToTileCoords_(rect.topLeft()).toPoint()
startPos = self.tileToScreenCoords_(startTile).toPoint()
## Determine in which half of the tile the top-left corner of the area we
# need to draw is. If we're in the upper half, we need to start one row
# up due to those tiles being visible as well. How we go up one row
# depends on whether we're in the left or right half of the tile.
##
inUpperHalf = rect.y() - startPos.y() < p.sideOffsetY
inLeftHalf = rect.x() - startPos.x() < p.sideOffsetX
if (inUpperHalf):
startTile.setY(startTile.y() - 1)
if (inLeftHalf):
startTile.setX(startTile.x() - 1)
startTile.setX(max(0, startTile.x()))
startTile.setY(max(0, startTile.y()))
startPos = self.tileToScreenCoords_(startTile).toPoint()
oct = [
QPoint(0, p.tileHeight - p.sideOffsetY),
QPoint(0, p.sideOffsetY),
QPoint(p.sideOffsetX, 0),
QPoint(p.tileWidth - p.sideOffsetX, 0),
QPoint(p.tileWidth, p.sideOffsetY),
QPoint(p.tileWidth, p.tileHeight - p.sideOffsetY),
QPoint(p.tileWidth - p.sideOffsetX, p.tileHeight),
QPoint(p.sideOffsetX, p.tileHeight)]
lines = QVector()
#lines.reserve(8)
gridColor.setAlpha(128)
gridPen = QPen(gridColor)
gridPen.setCosmetic(True)
_x = QVector()
_x.append(2)
_x.append(2)
gridPen.setDashPattern(_x)
painter.setPen(gridPen)
if (p.staggerX):
# Odd row shifting is applied in the rendering loop, so un-apply it here
if (p.doStaggerX(startTile.x())):
startPos.setY(startPos.y() - p.rowHeight)
while(startPos.x() <= rect.right() and startTile.x() < self.map().width()):
rowTile = QPoint(startTile)
rowPos = QPoint(startPos)
if (p.doStaggerX(startTile.x())):
rowPos.setY(rowPos.y() + p.rowHeight)
while(rowPos.y() <= rect.bottom() and rowTile.y() < self.map().height()):
lines.append(QLineF(rowPos + oct[1], rowPos + oct[2]))
lines.append(QLineF(rowPos + oct[2], rowPos + oct[3]))
lines.append(QLineF(rowPos + oct[3], rowPos + oct[4]))
isStaggered = p.doStaggerX(startTile.x())
lastRow = rowTile.y() == self.map().height() - 1
lastColumn = rowTile.x() == self.map().width() - 1
bottomLeft = rowTile.x() == 0 or (lastRow and isStaggered)
bottomRight = lastColumn or (lastRow and isStaggered)
if (bottomRight):
lines.append(QLineF(rowPos + oct[5], rowPos + oct[6]))
if (lastRow):
lines.append(QLineF(rowPos + oct[6], rowPos + oct[7]))
if (bottomLeft):
lines.append(QLineF(rowPos + oct[7], rowPos + oct[0]))
painter.drawLines(lines)
lines.resize(0)
rowPos.setY(rowPos.y() + p.tileHeight + p.sideLengthY)
rowTile.setY(rowTile.y() + 1)
startPos.setX(startPos.x() + p.columnWidth)
startTile.setX(startTile.x() + 1)
else:
# Odd row shifting is applied in the rendering loop, so un-apply it here
if (p.doStaggerY(startTile.y())):
startPos.setX(startPos.x() - p.columnWidth)
while(startPos.y() <= rect.bottom() and startTile.y() < self.map().height()):
rowTile = QPoint(startTile)
rowPos = QPoint(startPos)
if (p.doStaggerY(startTile.y())):
rowPos.setX(rowPos.x() + p.columnWidth)
while(rowPos.x() <= rect.right() and rowTile.x() < self.map().width()):
lines.append(QLineF(rowPos + oct[0], rowPos + oct[1]))
lines.append(QLineF(rowPos + oct[1], rowPos + oct[2]))
lines.append(QLineF(rowPos + oct[3], rowPos + oct[4]))
isStaggered = p.doStaggerY(startTile.y())
lastRow = rowTile.y() == self.map().height() - 1
lastColumn = rowTile.x() == self.map().width() - 1
bottomLeft = lastRow or (rowTile.x() == 0 and not isStaggered)
bottomRight = lastRow or (lastColumn and isStaggered)
if (lastColumn):
lines.append(QLineF(rowPos + oct[4], rowPos + oct[5]))
if (bottomRight):
lines.append(QLineF(rowPos + oct[5], rowPos + oct[6]))
if (bottomLeft):
lines.append(QLineF(rowPos + oct[7], rowPos + oct[0]))
painter.drawLines(lines)
lines.resize(0)
rowPos.setX(rowPos.x() + p.tileWidth + p.sideLengthX)
#.........这里部分代码省略.........