本文整理汇总了C++中QRectF::y方法的典型用法代码示例。如果您正苦于以下问题:C++ QRectF::y方法的具体用法?C++ QRectF::y怎么用?C++ QRectF::y使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QRectF
的用法示例。
在下文中一共展示了QRectF::y方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: renderText
int SvgView::renderText(const QStringRef &text)
{
scene->clear();
QRectF currentMarginsRect;
if (changeMargins)
currentMarginsRect = QRectF(QPointF(sheetRect.topRight().x() - marginsRect.topRight().x(),
marginsRect.topLeft().y()),
QPointF(sheetRect.bottomRight().x() - marginsRect.bottomLeft().x(),
marginsRect.bottomRight().y()));
else
currentMarginsRect = marginsRect;
scene->addRect(sheetRect);
scene->addRect(currentMarginsRect, QPen(Qt::darkGray));
QPointF cursor(currentMarginsRect.x(), currentMarginsRect.y());
int endOfSheet = 0;
for (QChar symbol : text)
{
qreal letterWidth = fontSize * dpmm / 4, letterHeight = fontSize * dpmm;
//don't try to go beyond the right margin
if (cursor.x() > (currentMarginsRect.x() + currentMarginsRect.width() - letterWidth))
{
if (symbol.isSpace()) //ignore whitespace-symbols at the end of the current line
continue;
cursor += QPointF(currentMarginsRect.x() - cursor.x(), letterHeight + lineSpacing * dpmm);
}
//stop rendering when you reach the end of sheet
if (cursor.y() > currentMarginsRect.bottomRight().y() - letterHeight)
return endOfSheet;
if (symbol.isSpace())
{
switch (symbol.toLatin1())
{
case '\t':
cursor += QPointF(letterWidth * spacesInTab, 0.0);
endOfSheet++;
continue;
case '\n':
cursor += QPointF(currentMarginsRect.x() - cursor.x(), letterHeight + lineSpacing * dpmm);
endOfSheet++;
continue;
default:
cursor += QPointF(letterWidth, 0.0);
endOfSheet++;
continue;
}
}
if (!font.contains(symbol))
{
cursor += QPointF(letterWidth, 0.0);
endOfSheet++;
continue;
}
QGraphicsSvgItem *letter = new QGraphicsSvgItem(font.values(symbol).at(qrand() % font.values(symbol).size()));
if (useCustomFontColor)
{
QGraphicsColorizeEffect *colorEffect = new QGraphicsColorizeEffect();
colorEffect->setColor(fontColor);
letter->setGraphicsEffect(colorEffect);
}
letter->setScale(letterHeight / letter->boundingRect().height());
letterWidth = letter->boundingRect().width() * letter->scale() + letterSpacing * dpmm;
letter->setPos(cursor);
cursor += QPointF(letterWidth, 0.0);
scene->addItem(letter);
endOfSheet++;
}
return endOfSheet;
}
示例2: fileInfo
/** Retrieve the named tile from the WMS server. A tileCompleted signal will
* be emitted when the tile is ready.
*/
void
WMSRequester::retrieveTile(const QString& tileName,
const QString& surface,
const QRectF& tileRect,
unsigned int tileSize,
vesta::TextureMap* texture)
{
if (!m_surfaces.contains(surface))
{
// Surface not defined
return;
}
QString fileName = tileFileName(tileName, surface);
QFileInfo fileInfo(fileName);
if (fileInfo.exists())
{
QImage image(fileName);
emit imageCompleted(tileName, image);
return;
}
LatLongBoundingBox tileBox(tileRect.x(),
tileRect.y(),
tileRect.x() + tileRect.width(),
tileRect.y() + tileRect.height());
SurfaceProperties surfaceProps = m_surfaces[surface];
unsigned int wmsTileWidth = surfaceProps.tileWidth;
unsigned int wmsTileHeight = surfaceProps.tileHeight;
LatLongBoundingBox topLeft = surfaceProps.topLeft;
double tileLongExtent = tileBox.east - tileBox.west;
double tileLatExtent = tileBox.north - tileBox.south;
double requestedResolution = tileLongExtent / double(tileSize);
double baseWmsResolution = (topLeft.east - topLeft.west) / double(wmsTileWidth);
unsigned int wmsLevel = 0;
while (requestedResolution < baseWmsResolution / (1 << wmsLevel))
{
wmsLevel++;
}
double wmsTileLongExtent = (topLeft.east - topLeft.west) / (1 << wmsLevel);
double wmsTileLatExtent = (topLeft.north - topLeft.south) / (1 << wmsLevel);
topLeft.east = topLeft.west + wmsTileLongExtent;
topLeft.south = topLeft.north - wmsTileLatExtent;
int westIndex = int(floor((tileBox.west - topLeft.west) / wmsTileLongExtent));
int southIndex = int(floor((tileBox.south - topLeft.south) / wmsTileLatExtent));
int eastIndex = int(ceil((tileBox.east - topLeft.west) / wmsTileLongExtent));
int northIndex = int(ceil((tileBox.north - topLeft.south) / wmsTileLatExtent));
TileAssembly* tileAssembly = new TileAssembly;
tileAssembly->tileImage;
tileAssembly->requestCount = 0;
tileAssembly->tileName = tileName;
tileAssembly->surfaceName = surface;
tileAssembly->tileWidth = tileSize;
tileAssembly->tileHeight = tileSize;
tileAssembly->texture = texture;
for (int lat = southIndex; lat < northIndex; ++lat)
{
for (int lon = westIndex; lon < eastIndex; ++lon)
{
LatLongBoundingBox bbox;
bbox.west = topLeft.west + lon * wmsTileLongExtent;
bbox.south = topLeft.south + lat * wmsTileLatExtent;
bbox.east = bbox.west + wmsTileLongExtent;
bbox.north = bbox.south + wmsTileLatExtent;
QString urlString = createWmsUrl(surfaceProps.requestUrl, bbox, surfaceProps.tileWidth, surfaceProps.tileHeight);
TileBuildOperation op;
op.tile = tileAssembly;
op.subrect = QRectF(float(tileSize * (bbox.west - tileBox.west) / tileLongExtent),
-float(tileSize * (bbox.north - tileBox.north) / tileLatExtent),
tileSize * wmsTileLongExtent / tileLongExtent, tileSize * wmsTileLatExtent / tileLatExtent);
op.urlString = urlString;
op.tile->requestCount++;
if (m_dispatchedRequestCount < MaxOutstandingNetworkRequests)
{
requestTile(op);
}
else
{
QMutexLocker locker(&m_mutex);
m_queuedTiles.append(op);
}
}
}
}
示例3: debug
void DebugDialog::debug(QString prefix, const QRectF &rect, DebugLevel debug, QObject *ancestor) {
QString msg = prefix+QString(" rect: x=%1 y=%2 w=%3 h=%4")
.arg(rect.x()).arg(rect.y()).arg(rect.width()).arg(rect.height());
DebugDialog::debug(msg,debug,ancestor);
}
示例4: if
QSGNode *QQuickImage::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *)
{
Q_D(QQuickImage);
QSGTexture *texture = d->sceneGraphRenderContext()->textureForFactory(d->pix.textureFactory(), window());
// Copy over the current texture state into the texture provider...
if (d->provider) {
d->provider->m_smooth = d->smooth;
d->provider->m_mipmap = d->mipmap;
d->provider->updateTexture(texture);
}
if (!texture || width() <= 0 || height() <= 0) {
delete oldNode;
return 0;
}
QSGImageNode *node = static_cast<QSGImageNode *>(oldNode);
if (!node) {
d->pixmapChanged = true;
node = d->sceneGraphContext()->createImageNode();
}
QRectF targetRect;
QRectF sourceRect;
QSGTexture::WrapMode hWrap = QSGTexture::ClampToEdge;
QSGTexture::WrapMode vWrap = QSGTexture::ClampToEdge;
qreal pixWidth = (d->fillMode == PreserveAspectFit) ? d->paintedWidth : d->pix.width() / d->devicePixelRatio;
qreal pixHeight = (d->fillMode == PreserveAspectFit) ? d->paintedHeight : d->pix.height() / d->devicePixelRatio;
int xOffset = 0;
if (d->hAlign == QQuickImage::AlignHCenter)
xOffset = qCeil((width() - pixWidth) / 2.);
else if (d->hAlign == QQuickImage::AlignRight)
xOffset = qCeil(width() - pixWidth);
int yOffset = 0;
if (d->vAlign == QQuickImage::AlignVCenter)
yOffset = qCeil((height() - pixHeight) / 2.);
else if (d->vAlign == QQuickImage::AlignBottom)
yOffset = qCeil(height() - pixHeight);
switch (d->fillMode) {
default:
case Stretch:
targetRect = QRectF(0, 0, width(), height());
sourceRect = d->pix.rect();
break;
case PreserveAspectFit:
targetRect = QRectF(xOffset, yOffset, d->paintedWidth, d->paintedHeight);
sourceRect = d->pix.rect();
break;
case PreserveAspectCrop: {
targetRect = QRect(0, 0, width(), height());
qreal wscale = width() / qreal(d->pix.width());
qreal hscale = height() / qreal(d->pix.height());
if (wscale > hscale) {
int src = (hscale / wscale) * qreal(d->pix.height());
int y = 0;
if (d->vAlign == QQuickImage::AlignVCenter)
y = qCeil((d->pix.height() - src) / 2.);
else if (d->vAlign == QQuickImage::AlignBottom)
y = qCeil(d->pix.height() - src);
sourceRect = QRectF(0, y, d->pix.width(), src);
} else {
int src = (wscale / hscale) * qreal(d->pix.width());
int x = 0;
if (d->hAlign == QQuickImage::AlignHCenter)
x = qCeil((d->pix.width() - src) / 2.);
else if (d->hAlign == QQuickImage::AlignRight)
x = qCeil(d->pix.width() - src);
sourceRect = QRectF(x, 0, src, d->pix.height());
}
}
break;
case Tile:
targetRect = QRectF(0, 0, width(), height());
sourceRect = QRectF(-xOffset, -yOffset, width(), height());
hWrap = QSGTexture::Repeat;
vWrap = QSGTexture::Repeat;
break;
case TileHorizontally:
targetRect = QRectF(0, 0, width(), height());
sourceRect = QRectF(-xOffset, 0, width(), d->pix.height());
hWrap = QSGTexture::Repeat;
break;
case TileVertically:
targetRect = QRectF(0, 0, width(), height());
sourceRect = QRectF(0, -yOffset, d->pix.width(), height());
vWrap = QSGTexture::Repeat;
break;
//.........这里部分代码省略.........
示例5: paint
void ChooseGeneralBox::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) {
//============================================================
//||========================================================||
//|| 萩僉夲�揖米薦議冷繍 ||
//|| ______ ______ ______ ______ ______ ||
//|| | | | | | | | | | | ||
//|| | g1 | | g2 | | g3 | | g4 | | g5 | ||
//|| | | | | | | | | | | ||
//|| !!!!!! !!!!!! !!!!!! !!!!!! !!!!!! ||
//|| ______ ______ ______ ______ ||
//|| | | | | | | | | ||
//|| | g6 | | g7 | | g8 | | g9 | ||
//|| | | | | | | | | ||
//|| !!!!!! !!!!!! !!!!!! !!!!!! ||
//|| ---------------------------------------------- ||
//|| \/ ||
//|| ______ ______ ||
//|| | | | | ||
//|| | hg | | dg | ||
//|| | | | | ||
//|| !!!!!! !!!!!! ||
//|| __________ ||
//|| | 鳩協 | ||
//|| !!!!!!!!!! ||
//|| ========================= ||
//|| ||
//============================================================
//
//
//==================================================
//|| 岑失岑泳鉱心麼繍 ||
//||==============================================||
//|| ||
//|| __________________ ||
//|| | | ||
//|| | | ||
//|| | | ||
//|| | | ||
//|| | | ||
//|| | | ||
//|| | | ||
//|| | | ||
//|| | | ||
//|| | | ||
//|| !!!!!!!!!!!!!!!!!! ||
//|| ||
//|| ================== ||
//|| || confirm || ||
//|| ================== ||
//|| ||
//==================================================
painter->save();
painter->setBrush(QBrush(G_COMMON_LAYOUT.m_chooseGeneralBoxBackgroundColor));
QRectF rect = boundingRect();
const int x = rect.x();
const int y = rect.y();
const int w = rect.width();
const int h = rect.height();
painter->drawRect(QRect(x, y, w, h));
painter->drawRect(QRect(x, y, w, top_dark_bar));
G_COMMON_LAYOUT.m_chooseGeneralBoxTitleFont.paintText(painter, QRect(x, y, w, top_dark_bar), Qt::AlignCenter, single_result ? tr("Please select one general") : tr("Please select the same nationality generals"));
painter->restore();
painter->setPen(G_COMMON_LAYOUT.m_chooseGeneralBoxBorderColor);
painter->drawRect(QRect(x + 1, y + 1, w - 2, h - 2));
if (single_result) return;
int split_line_y = top_blank_width + G_COMMON_LAYOUT.m_cardNormalHeight + card_bottom_to_split_line;
if (general_number > 5)
split_line_y += (card_to_center_line + G_COMMON_LAYOUT.m_cardNormalHeight);
QPixmap line = G_ROOM_SKIN.getPixmap(QSanRoomSkin::S_SKIN_KEY_CHOOSE_GENERAL_BOX_SPLIT_LINE);
const int line_length = boundingRect().width() - 2 * left_blank_width;
painter->drawPixmap(left_blank_width, split_line_y, line, (line.width() - line_length) / 2, y, line_length, line.height());
QPixmap seat = G_ROOM_SKIN.getPixmap(QSanRoomSkin::S_SKIN_KEY_CHOOSE_GENERAL_BOX_DEST_SEAT);
QRect seat1_rect(rect.center().x() - G_COMMON_LAYOUT.m_cardNormalWidth - card_to_center_line - 2, split_line_y + split_line_to_card_seat - 2, G_COMMON_LAYOUT.m_cardNormalWidth + 4, G_COMMON_LAYOUT.m_cardNormalHeight + 4);
painter->drawPixmap(seat1_rect, seat);
IQSanComponentSkin::QSanSimpleTextFont font = G_COMMON_LAYOUT.m_chooseGeneralBoxDestSeatFont;
font.paintText(painter, seat1_rect, Qt::AlignCenter, tr("head_general"));
QRect seat2_rect(rect.center().x() + card_to_center_line - 2, split_line_y + split_line_to_card_seat - 2, G_COMMON_LAYOUT.m_cardNormalWidth + 4, G_COMMON_LAYOUT.m_cardNormalHeight + 4);
painter->drawPixmap(seat2_rect, seat);
font.paintText(painter, seat2_rect, Qt::AlignCenter, tr("deputy_general"));
}
示例6: mousePressEvent
void WTextSourceViewerLine::mousePressEvent ( QMouseEvent * e )
{
QRectF lineRect;
QPoint pos=e->pos();
if (e->button() != Qt::LeftButton)
return;
pos.setY(pos.y()+translation_y);
int i;
QBitArray hidden_lines;
hidden_lines.resize(number_of_lines);
for (i=0;i<number_of_lines;i++) hidden_lines[i]=true;
int current_line=-1;
int block_end=-1;
int block_start=-1;
bool hide_current_line=true;
bool found=false;
for (QTextBlock textBlock=text_document_p->begin();
textBlock!=text_document_p->end();
textBlock=textBlock.next())
{
TextSourceInstrumentationData *instrumentationData=dynamic_cast<TextSourceInstrumentationData*> (textBlock.userData());
if (instrumentationData)
{
lineRect=text_document_p->documentLayout()->blockBoundingRect(textBlock);
QRectF hitRect(0,lineRect.y(),width(),lineRect.height());
hidden_lines[instrumentationData->current_line-1]=false;
if (hitRect.contains(pos))
{
current_line = instrumentationData->current_line;
hide_current_line = (instrumentationData->instrumentations.isEmpty()) ;
if (hide_current_line)
found=true;
}
if (instrumentationData->instrumentations.isEmpty())
{
block_end=instrumentationData->current_line;
if (block_start==-1)
block_start=instrumentationData->current_line;
}
else
{
if (!hide_current_line)
found=false;
if (found)
{
found=false;
for (i=block_start-1;i<=block_end-1;i++)
hidden_lines[i]=hide_current_line;
}
block_end=-1;
block_start=-1;
}
}
}
if (found)
{
found=false;
for (i=block_start-1;i<=block_end-1;i++)
hidden_lines[i]=hide_current_line;
}
if (current_line<0)
{
e->accept();
return;
}
int scroll_to_line=current_line;
if (!hide_current_line)
{
int i;
for (i=current_line;i<number_of_lines && hidden_lines[i];i++)
hidden_lines[i]=false;
for (i=current_line-2;i>=0 && hidden_lines[i];i--)
hidden_lines[i]=false;
}
else
{
for (int i=current_line;i<number_of_lines && hidden_lines[i];i++)
scroll_to_line=i+2;
}
emit hideLines(scroll_to_line,hidden_lines);
e->accept();
}
示例7: render
void SdfRenderer::render(QPainter *painter, const QRectF &bounds)
{
current_size_x = static_cast<int>(bounds.width());
current_size_y = static_cast<int>(bounds.height());
mStartX = static_cast<int>(bounds.x());
mStartY = static_cast<int>(bounds.y());
this->painter = painter;
QDomElement docElem = doc.documentElement();
QDomNode node = docElem.firstChild();
while(!node.isNull())
{
QDomElement elem = node.toElement();
if(!elem.isNull())
{
if (elem.tagName()=="line")
{
line(elem);
}
else if(elem.tagName()=="ellipse")
{
ellipse(elem);
}
else if (elem.tagName() == "arc") {
arc(elem);
}
else if(elem.tagName()=="background")
{
background(elem);
}
else if(elem.tagName()=="text")
{
draw_text(elem);
}
else if (elem.tagName()=="rectangle")
{
rectangle(elem);
}
else if (elem.tagName()=="polygon")
{
polygon(elem);
}
else if (elem.tagName()=="point")
{
point(elem);
}
else if(elem.tagName()=="path")
{
path_draw(elem);
}
else if(elem.tagName()=="stylus")
{
stylus_draw(elem);
}
else if(elem.tagName()=="curve")
{
curve_draw(elem);
}
else if(elem.tagName()=="image")
{
image_draw(elem);
}
}
node = node.nextSibling();
}
this->painter = 0;
}
示例8: paintGanttItem
/*! Paints the gantt item \a idx using \a painter and \a opt
*/
void ItemDelegate::paintGanttItem( QPainter* painter,
const StyleOptionGanttItem& opt,
const QModelIndex& idx )
{
if ( !idx.isValid() ) return;
const ItemType typ = static_cast<ItemType>( idx.model()->data( idx, ItemTypeRole ).toInt() );
const QString& txt = opt.text;
QRectF itemRect = opt.itemRect;
QRectF boundingRect = opt.boundingRect;
boundingRect.setY( itemRect.y() );
boundingRect.setHeight( itemRect.height() );
//qDebug() << "itemRect="<<itemRect<<", boundingRect="<<boundingRect;
painter->save();
QPen pen = defaultPen( typ );
if ( opt.state & QStyle::State_Selected ) pen.setWidth( 2*pen.width() );
painter->setPen( pen );
painter->setBrush( defaultBrush( typ ) );
qreal pw = painter->pen().width()/2.;
switch( typ ) {
case TypeTask:
if ( itemRect.isValid() ) {
// TODO
qreal pw = painter->pen().width()/2.;
pw-=1;
QRectF r = itemRect;
r.translate( 0., r.height()/6. );
r.setHeight( 2.*r.height()/3. );
painter->setBrushOrigin( itemRect.topLeft() );
painter->save();
painter->translate( 0.5, 0.5 );
painter->drawRect( r );
bool ok;
qreal completion = idx.model()->data( idx, KDGantt::TaskCompletionRole ).toDouble( &ok );
if ( ok ) {
qreal h = r.height();
QRectF cr( r.x(), r.y()+h/4. + 1,
r.width()*completion/100., h/2. - 2 );
painter->fillRect( cr, painter->pen().brush() );
}
painter->restore();
Qt::Alignment ta;
switch( opt.displayPosition ) {
case StyleOptionGanttItem::Left: ta = Qt::AlignLeft; break;
case StyleOptionGanttItem::Right: ta = Qt::AlignRight; break;
case StyleOptionGanttItem::Center: ta = Qt::AlignCenter; break;
}
painter->drawText( boundingRect, ta, txt );
}
break;
case TypeSummary:
if ( opt.itemRect.isValid() ) {
// TODO
pw-=1;
const QRectF r = QRectF( opt.itemRect ).adjusted( -pw, -pw, pw, pw );
QPainterPath path;
const qreal deltaY = r.height()/2.;
const qreal deltaX = qMin( r.width()/qreal(2), deltaY );
path.moveTo( r.topLeft() );
path.lineTo( r.topRight() );
path.lineTo( QPointF( r.right(), r.top() + 2.*deltaY ) );
//path.lineTo( QPointF( r.right()-3./2.*delta, r.top() + delta ) );
path.quadTo( QPointF( r.right()-.5*deltaX, r.top() + deltaY ), QPointF( r.right()-2.*deltaX, r.top() + deltaY ) );
//path.lineTo( QPointF( r.left()+3./2.*delta, r.top() + delta ) );
path.lineTo( QPointF( r.left() + 2.*deltaX, r.top() + deltaY ) );
path.quadTo( QPointF( r.left()+.5*deltaX, r.top() + deltaY ), QPointF( r.left(), r.top() + 2.*deltaY ) );
path.closeSubpath();
painter->setBrushOrigin( itemRect.topLeft() );
painter->save();
painter->translate( 0.5, 0.5 );
painter->drawPath( path );
painter->restore();
Qt::Alignment ta;
switch( opt.displayPosition ) {
case StyleOptionGanttItem::Left: ta = Qt::AlignLeft; break;
case StyleOptionGanttItem::Right: ta = Qt::AlignRight; break;
case StyleOptionGanttItem::Center: ta = Qt::AlignCenter; break;
}
painter->drawText( boundingRect, ta | Qt::AlignVCenter, txt );
}
break;
case TypeEvent: /* TODO */
//qDebug() << opt.boundingRect << opt.itemRect;
if ( opt.boundingRect.isValid() ) {
const qreal pw = painter->pen().width() / 2. - 1;
const QRectF r = QRectF( opt.rect ).adjusted( -pw, -pw, pw, pw );
QPainterPath path;
const qreal delta = static_cast< int >( r.height() / 2 );
path.moveTo( delta, 0. );
path.lineTo( 2.*delta, delta );
path.lineTo( delta, 2.*delta );
path.lineTo( 0., delta );
path.closeSubpath();
painter->save();
painter->translate( r.topLeft() );
painter->translate( 0.5, 0.5 );
//.........这里部分代码省略.........
示例9: cellPoint
QPointF QuickGridDefinition::cellPoint(QRectF rect, int row, int column)
{
return QPointF(columnOffset(column) * rect.width() + rect.x(), rowOffset(row) * rect.height() + rect.y());
}
示例10: paint
void EventsSceneArrowTmpItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)
{
Q_UNUSED(option);
Q_UNUSED(widget);
QRectF rect = boundingRect();
//painter->fillRect(rect, QColor(255, 0, 0, 30));
painter->setRenderHint(QPainter::Antialiasing);
int penWidth = 2;
QColor color = Qt::black;
switch(mState)
{
case eNormal:
color = Qt::black;
break;
case eAllowed:
color = QColor(77, 180, 62);
break;
case eForbidden:
color = Qt::red;
break;
default:
break;
}
painter->setPen(QPen(color, penWidth, Qt::DashLine));
painter->drawLine(mXFrom, mYFrom, mXTo, mYTo);
// arrows
float angle_rad = atanf(rect.width() / rect.height());
float angle_deg = angle_rad * 180. / M_PI;
QPainterPath path;
int arrow_w = 10;
int arrow_l = 15;
path.moveTo(-arrow_w/2, arrow_l/2);
path.lineTo(arrow_w/2, arrow_l/2);
path.lineTo(0, -arrow_l/2);
path.closeSubpath();
float posX = rect.width()/2;
float posY = rect.height()/2;
if(mXFrom < mXTo && mYFrom > mYTo)
{
painter->save();
painter->translate(rect.x() + posX, rect.y() + posY);
painter->rotate(angle_deg);
painter->fillPath(path, color);
painter->restore();
}
else if(mXFrom < mXTo && mYFrom < mYTo)
{
painter->save();
painter->translate(rect.x() + posX, rect.y() + posY);
painter->rotate(180 - angle_deg);
painter->fillPath(path, color);
painter->restore();
}
else if(mXFrom > mXTo && mYFrom < mYTo)
{
painter->save();
painter->translate(rect.x() + posX, rect.y() + posY);
painter->rotate(180 + angle_deg);
painter->fillPath(path, color);
painter->restore();
}
else if(mXFrom > mXTo && mYFrom > mYTo)
{
painter->save();
painter->translate(rect.x() + rect.width()/2, rect.y() + rect.height()/2);
painter->rotate(-angle_deg);
painter->fillPath(path, color);
painter->restore();
}
// Message
switch(mState)
{
case eAllowed:
case eForbidden:
{
float w = 40;
float h = 40;
QRectF r(rect.x() + (rect.width() - w)/2, rect.y() + (rect.height() - h)/2, w, h);
painter->setBrush(Qt::white);
painter->drawEllipse(r);
if(mState == eAllowed)
{
painter->drawText(r, Qt::AlignCenter, "OK");
}
else
{
painter->setPen(QPen(color, penWidth, Qt::SolidLine, Qt::RoundCap));
painter->drawLine(r.x() + r.width()/4, r.y() + r.height()/4, r.x() + 3*r.width()/4, r.y() + 3*r.height()/4);
//.........这里部分代码省略.........
示例11: render
void QZint::render(QPainter & painter, const QRectF & paintRect, AspectRatioMode mode)
{
encode();
bool textdone;
int comp_offset = 0, xoffset = m_whitespace, j, main_width = 0, addon_text_height = 0;
int yoffset = 0;
QString caption = QString::fromUtf8((const char *)m_zintSymbol->text, -1);
QFont fontSmall(fontstyle);
fontSmall.setPixelSize(fontPixelSizeSmall);
QFont fontLarge(fontstyle);
fontLarge.setPixelSize(fontPixelSizeLarge);
if (m_lastError.length())
{
painter.setFont(fontLarge);
painter.drawText(paintRect,Qt::AlignCenter,m_lastError);
return;
}
painter.save();
painter.setClipRect(paintRect,Qt::IntersectClip);
qreal xtr=paintRect.x();
qreal ytr=paintRect.y();
int zrow_height=m_zintSymbol->height;
int zrows=0;
for (int i=0;i<m_zintSymbol->rows;i++)
{
zrow_height-=m_zintSymbol->row_height[i];
if (!m_zintSymbol->row_height[i])
zrows++;
}
if (zrows)
{
zrow_height/=zrows;
for (int i=0;i<m_zintSymbol->rows;i++)
if (!m_zintSymbol->row_height[i])
m_zintSymbol->row_height[i]=zrow_height;
}
else
m_zintSymbol->height-=zrow_height;
qreal gwidth=m_zintSymbol->width;
qreal gheight=m_zintSymbol->height;
if (m_zintSymbol->symbology == BARCODE_MAXICODE)
{
gheight*=(maxi_width);
gwidth*=(maxi_width+1);
}
qreal xsf=1;
qreal ysf=1;
qreal textoffset = 0;
gwidth+=((m_border==BOX)?m_borderWidth*2:0);
gheight+=((m_border!=NO_BORDER)?m_borderWidth*2:0);
if(QString((const char*)m_zintSymbol->text).isEmpty() == false) {
textoffset = 9;
gheight += textoffset;
} else {
textoffset = 0;
}
gwidth+=m_zintSymbol->whitespace_width*2;
switch(mode)
{
case IgnoreAspectRatio:
xsf=(qreal)paintRect.width()/gwidth;
ysf=(qreal)paintRect.height()/gheight;
break;
case KeepAspectRatio:
if (paintRect.width()/gwidth<paintRect.height()/gheight)
{
ysf=xsf=(qreal)paintRect.width()/gwidth;
ytr+=(qreal)(paintRect.height()-gheight*ysf)/2;
}
else
{
ysf=xsf=(qreal)paintRect.height()/gheight;
xtr+=(qreal)(paintRect.width()-gwidth*xsf)/2;
}
break;
case CenterBarCode:
xtr+=((qreal)paintRect.width()-gwidth*xsf)/2;
ytr+=((qreal)paintRect.height()-gheight*ysf)/2;
break;
}
painter.setBackground(QBrush(m_bgColor));
painter.fillRect(paintRect,QBrush(m_bgColor));
painter.translate(xtr,ytr);
painter.scale(xsf,ysf);
QPen p;
p.setColor(m_fgColor);
p.setWidth(m_borderWidth);
painter.setPen(p);
//.........这里部分代码省略.........
示例12: drawTitle
void QwtScaleWidget::drawTitle( QPainter *painter,
QwtScaleDraw::Alignment align, const QRectF &rect ) const
{
QRectF r = rect;
double angle;
int flags = d_data->title.renderFlags() &
~( Qt::AlignTop | Qt::AlignBottom | Qt::AlignVCenter );
switch ( align )
{
case QwtScaleDraw::LeftScale:
angle = -90.0;
flags |= Qt::AlignTop;
r.setRect( r.left(), r.bottom(),
r.height(), r.width() - d_data->titleOffset );
break;
case QwtScaleDraw::RightScale:
angle = -90.0;
flags |= Qt::AlignTop;
r.setRect( r.left() + d_data->titleOffset, r.bottom(),
r.height(), r.width() - d_data->titleOffset );
break;
case QwtScaleDraw::BottomScale:
angle = 0.0;
flags |= Qt::AlignBottom;
r.setTop( r.top() + d_data->titleOffset );
break;
case QwtScaleDraw::TopScale:
default:
angle = 0.0;
flags |= Qt::AlignTop;
r.setBottom( r.bottom() - d_data->titleOffset );
break;
}
if ( d_data->layoutFlags & TitleInverted )
{
if ( align == QwtScaleDraw::LeftScale
|| align == QwtScaleDraw::RightScale )
{
angle = -angle;
r.setRect( r.x() + r.height(), r.y() - r.width(),
r.width(), r.height() );
}
}
painter->save();
painter->setFont( font() );
painter->setPen( palette().color( QPalette::Text ) );
painter->translate( r.x(), r.y() );
if ( angle != 0.0 )
painter->rotate( angle );
QwtText title = d_data->title;
title.setRenderFlags( flags );
title.draw( painter, QRectF( 0.0, 0.0, r.width(), r.height() ) );
painter->restore();
}
示例13: drawBackground
void PianoView::drawBackground(QPainter* p, const QRectF& r)
{
if (staff == 0)
return;
Score* _score = staff->score();
setFrameShape(QFrame::NoFrame);
QRectF r1;
r1.setCoords(-1000000.0, 0.0, 480.0, 1000000.0);
QRectF r2;
r2.setCoords(ticks + MAP_OFFSET, 0.0, 1000000.0, 1000000.0);
QColor bg(0x71, 0x8d, 0xbe);
p->fillRect(r, bg);
if (r.intersects(r1))
p->fillRect(r.intersected(r1), bg.darker(150));
if (r.intersects(r2))
p->fillRect(r.intersected(r2), bg.darker(150));
//
// draw horizontal grid lines
//
qreal y1 = r.y();
qreal y2 = y1 + r.height();
qreal kh = 13.0;
qreal x1 = r.x();
qreal x2 = x1 + r.width();
// int key = floor(y1 / 75);
int key = floor(y1 / kh);
qreal y = key * kh;
for (; key < 75; ++key, y += kh) {
if (y < y1)
continue;
if (y > y2)
break;
p->setPen(QPen((key % 7) == 5 ? Qt::lightGray : Qt::gray));
p->drawLine(QLineF(x1, y, x2, y));
}
//
// draw vertical grid lines
//
static const int mag[7] = {
1, 1, 2, 5, 10, 20, 50
};
Pos pos1 = pix2pos(x1);
Pos pos2 = pix2pos(x2);
//---------------------------------------------------
// draw raster
//---------------------------------------------------
int bar1, bar2, beat, tick;
pos1.mbt(&bar1, &beat, &tick);
pos2.mbt(&bar2, &beat, &tick);
int n = mag[magStep < 0 ? 0 : magStep];
bar1 = (bar1 / n) * n; // round down
if (bar1 && n >= 2)
bar1 -= 1;
bar2 = ((bar2 + n - 1) / n) * n; // round up
for (int bar = bar1; bar <= bar2;) {
Pos stick(_score->tempomap(), _score->sigmap(), bar, 0, 0);
if (magStep > 0) {
double x = double(pos2pix(stick));
if (x > 0) {
p->setPen(QPen(Qt::lightGray, 0.0));
p->drawLine(x, y1, x, y2);
}
else {
p->setPen(QPen(Qt::black, 0.0));
p->drawLine(x, y1, x, y1);
}
}
else {
int z = stick.timesig().timesig().numerator();
for (int beat = 0; beat < z; beat++) {
if (magStep == 0) {
Pos xx(_score->tempomap(), _score->sigmap(), bar, beat, 0);
int xp = pos2pix(xx);
if (xp < 0)
continue;
if (xp > 0) {
p->setPen(QPen(beat == 0 ? Qt::lightGray : Qt::gray, 0.0));
p->drawLine(xp, y1, xp, y2);
}
else {
p->setPen(QPen(Qt::black, 0.0));
p->drawLine(xp, y1, xp, y2);
}
}
else {
int k;
if (magStep == -1)
k = 2;
//.........这里部分代码省略.........
示例14: updateProperty
void QSGPropertyAnimator::updateProperty(QObject *target, const QString& p)
{
QSGAnimatedProperty *ap = m_controller->registeredProperty(p, target);
if (ap && m_duration > 0) {
if (m_elapsed > m_startTime && ((m_elapsed < m_startTime + m_loops * m_duration) || (m_loops < 0))) {
QVariant value = ap->value();
qreal tx = int(m_elapsed - m_startTime) % int(m_duration);
switch (value.type()) {
case QMetaType::Double:
value = QVariant(m_from.toReal() + (m_to.toReal() - m_from.toReal()) * m_easing.valueForProgress(tx / m_duration));
break;
case QMetaType::QColor:
{
QColor from = qvariant_cast<QColor>(m_from);
QColor to = qvariant_cast<QColor>(m_to);
QColor result = qvariant_cast<QColor>(value);
result.setRed(from.red() + (to.red() - from.red()) * m_easing.valueForProgress(tx / m_duration));
result.setGreen(from.green() + (to.green() - from.green()) * m_easing.valueForProgress(tx / m_duration));
result.setBlue(from.blue() + (to.blue() - from.blue()) * m_easing.valueForProgress(tx / m_duration));
result.setAlpha(from.alpha() + (to.alpha() - from.alpha()) * m_easing.valueForProgress(tx / m_duration));
value = result;
break;
}
case QMetaType::Int:
value = QVariant(m_from.toInt() + (m_to.toInt() - m_from.toInt()) * m_easing.valueForProgress(tx / m_duration));
break;
case QMetaType::QSize:
{
QSize from = m_from.toSize();
QSize to = m_to.toSize();
QSize result = value.toSize();
result.setWidth(from.width() + (to.width() - from.width()) * m_easing.valueForProgress(tx / m_duration));
result.setHeight(from.height() + (to.height() - from.height()) * m_easing.valueForProgress(tx / m_duration));
value = result;
break;
}
case QMetaType::QSizeF:
{
QSizeF from = m_from.toSize();
QSizeF to = m_to.toSize();
QSizeF result = value.toSize();
result.setWidth(from.width() + (to.width() - from.width()) * m_easing.valueForProgress(tx / m_duration));
result.setHeight(from.height() + (to.height() - from.height()) * m_easing.valueForProgress(tx / m_duration));
value = result;
break;
}
case QMetaType::QPoint:
{
QPoint from = m_from.toPoint();
QPoint to = m_to.toPoint();
QPoint result = value.toPoint();
result.setX(from.x() + (to.x() - from.x()) * m_easing.valueForProgress(tx / m_duration));
result.setY(from.y() + (to.y() - from.y()) * m_easing.valueForProgress(tx / m_duration));
value = result;
break;
}
case QMetaType::QPointF:
{
QPointF from = m_from.toPointF();
QPointF to = m_to.toPointF();
QPointF result = value.toPointF();
result.setX(from.x() + (to.x() - from.x()) * m_easing.valueForProgress(tx / m_duration));
result.setY(from.y() + (to.y() - from.y()) * m_easing.valueForProgress(tx / m_duration));
value = result;
break;
}
case QMetaType::QRect:
{
QRect from = m_from.toRect();
QRect to = m_to.toRect();
QRect result = value.toRect();
result.setX(from.x() + (to.x() - from.x()) * m_easing.valueForProgress(tx / m_duration));
result.setY(from.y() + (to.y() - from.y()) * m_easing.valueForProgress(tx / m_duration));
result.setWidth(from.width() + (to.width() - from.width()) * m_easing.valueForProgress(tx / m_duration));
result.setHeight(from.height() + (to.height() - from.height()) * m_easing.valueForProgress(tx / m_duration));
value = result;
break;
}
case QMetaType::QRectF:
{
QRectF from = m_from.toRectF();
QRectF to = m_to.toRectF();
QRectF result = value.toRectF();
result.setX(from.x() + (to.x() - from.x()) * m_easing.valueForProgress(tx / m_duration));
result.setY(from.y() + (to.y() - from.y()) * m_easing.valueForProgress(tx / m_duration));
result.setWidth(from.width() + (to.width() - from.width()) * m_easing.valueForProgress(tx / m_duration));
result.setHeight(from.height() + (to.height() - from.height()) * m_easing.valueForProgress(tx / m_duration));
value = result;
break;
}
case QMetaType::QVector3D:
{
QVector3D from = qvariant_cast<QVector3D>(m_from);
QVector3D to = qvariant_cast<QVector3D>(m_to);
QVector3D result = qvariant_cast<QVector3D>(value);
result.setX(from.x() + (to.x() - from.x()) * m_easing.valueForProgress(tx / m_duration));
result.setY(from.y() + (to.y() - from.y()) * m_easing.valueForProgress(tx / m_duration));
result.setZ(from.z() + (to.z() - from.z()) * m_easing.valueForProgress(tx / m_duration));
//.........这里部分代码省略.........
示例15: paintEvent
void MandelbrotWidget::paintEvent(QPaintEvent * /* event */)
{
QPainter painter(this);
painter.fillRect(rect(), Qt::black);
if (instances[0].pixmap.isNull()) {
painter.setPen(Qt::white);
painter.drawText(rect(), Qt::AlignCenter,
tr("Rendering initial image, please wait..."));
return;
}
int textWidth, pointCur;
QRectF screen;
QString textStat;
QRectF wholescreen = QRectF(0, 0, this->width(), this->height()); //Amir
QFontMetrics metrics = painter.fontMetrics();
for (int rowCur=0; rowCur< rowMax; rowCur++) //Amir
for (int colCur=0; colCur< colMax; colCur++) //Amir
{
pointCur = rowCur * colMax + colCur;
screen = QRectF(colCur * this->width() / colMax, rowCur * this->height() / rowMax,
this->width() / colMax - borderThreshold , this->height() / rowMax - borderThreshold); //Amir
if (instances[pointCur].curScale == instances[pointCur].pixmapScale) {
// painter.drawPixmap(pixmapOffset, pixmap);
painter.drawPixmap(screen, instances[pointCur].pixmap, wholescreen); //Amir
} else {
// double scaleFactor = pixmapScale / curScale;
// int newWidth = int(pixmap[pointCur].width() * scaleFactor);
// int newHeight = int(pixmap[pointCur].height() * scaleFactor);
// int newX = pixmapOffset.x() + (pixmap[pointCur].width() - newWidth) / 2;
// int newY = pixmapOffset.y() + (pixmap[pointCur].height() - newHeight) / 2;
painter.save();
// painter.translate(newX, newY);
// painter.scale(scaleFactor, scaleFactor);
// QRectF exposed = painter.matrix().inverted().mapRect(rect()).adjusted(-1, -1, 1, 1);
painter.drawPixmap(screen, instances[pointCur].pixmap, wholescreen); //Amir
//painter.drawPixmap(exposed, pixmap, exposed);
painter.restore();
}
if (instances[pointCur].renderingDone)
{
textStat = tr("Process Done");
textWidth = metrics.width(textStat);
}
else
{
textStat = tr("Process Pass ") + QString(instances[pointCur].renderingDoneLevel+0x30);
textWidth = metrics.width(textStat);
}
painter.setPen(Qt::NoPen);
painter.setBrush(QColor(0, 0, 0, 127));
painter.drawRect(screen.x(),
screen.y() + screen.height() -20,
100,
20);
painter.setPen(Qt::white);
painter.drawText(screen.x() + 3,
screen.y() + screen.height() - 5,
textStat);
}
QString text = tr("Use mouse wheel or the '+' and '-' keys to zoom. "
"Press and hold left mouse button to scroll.");
// QFontMetrics metrics = painter.fontMetrics();
textWidth = metrics.width(text);
painter.setPen(Qt::NoPen);
painter.setBrush(QColor(0, 0, 0, 127));
painter.drawRect((width() - textWidth) / 2 - 5, 0, textWidth + 10,
metrics.lineSpacing() + 5);
painter.setPen(Qt::white);
painter.drawText((width() - textWidth) / 2,
metrics.leading() + metrics.ascent(), text);
}