本文整理汇总了C++中QPainter::drawPolygon方法的典型用法代码示例。如果您正苦于以下问题:C++ QPainter::drawPolygon方法的具体用法?C++ QPainter::drawPolygon怎么用?C++ QPainter::drawPolygon使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QPainter
的用法示例。
在下文中一共展示了QPainter::drawPolygon方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: NgoiLang
void graphics::NgoiLang(QPainter& painter,int x,int y,int c,int r)
{
QPoint A(x-r/2,y+c);
QPoint B(x+r/2,y+c);
QPoint C(x+r/2,y+c/3);
QPoint D(x,y);
QPoint E(x-r/2,y+c/3);
QPolygon poly1;
poly1 << D << E << A << B << C;
painter.drawPolygon(poly1);
// ve cai cua
QPoint A1(x,y+c);
QPoint B1(x,y+2*c/3);
QPoint C1(x-r/4,y+2*c/3);
QPoint D1(x-r/4,y+c);
QPolygon poly2;
poly2 << A1 << B1 << C1 << D1;
painter.drawPolyline(poly2);
// ve cua so
QPoint A11(x-r/4,y+c/6);
QPoint B11(x-r/4,y);
QPoint C11(x-r/8,y);
QPoint D11(x-r/8,y+c/12);
QPolygon poly21;
poly21 << A11 << B11 << C11 << D11;
painter.drawPolygon(poly21);
painter.drawRect(x+r/4,y+c/2.5,c/10,r/10);
}
示例2: GsshDrawPolygons
//-----------------------------------------------------------------------
void GshhsReader::GsshDrawPolygons(QPainter &pnt, std::vector <GshhsPolygon*> &lst,
Projection *proj
)
{
std::vector <GshhsPolygon*>::iterator iter;
GshhsPolygon *pol;
QPoint *pts = NULL;
int i;
int nbp;
int nbmax = 10000;
pts = new QPoint[nbmax];
assert(pts);
for (i=0, iter=lst.begin(); iter!=lst.end(); iter++,i++) {
pol = *iter;
if (nbmax < pol->n+2) {
nbmax = pol->n+2;
pts = new QPoint[nbmax];
assert(pts);
}
nbp = GSHHS_scaledPoints(pol, pts, 0, proj);
if (nbp > 3)
pnt.drawPolygon(pts, nbp);
nbp = GSHHS_scaledPoints(pol, pts, -360, proj);
if (nbp > 3)
pnt.drawPolygon(pts, nbp);
}
delete [] pts;
}
示例3: NgoiNhaTiHon
void graphics::NgoiNhaTiHon(QPainter& painter)
{
QPoint A(150,450);
QPoint B(350,450);
QPoint C(350,200);
QPoint D(250,100);
QPoint E(150,200);
QPolygon poly1;
poly1 << A << B << C << D << E;
painter.drawPolygon(poly1);
// cai cua
QPoint A1(250,450);
QPoint B1(250,300);
QPoint C1(200,300);
QPoint D1(200,450);
QPolygon poly11;
poly11 << A1 << B1 << C1 << D1;
painter.drawPolygon(poly11);
painter.drawRect(300,250,30,30);
// ong khoi
QPoint A12(200,150);
QPoint B12(200,90);
QPoint C12(175,90);
QPoint D12(175,175);
QPolygon poly12;
poly12 << A12 << B12 << C12 << D12;
painter.drawPolyline(poly12);
}
示例4: virtualToWidget
void
PictureZoneEditor::paintOverPictureMask(QPainter& painter)
{
painter.setRenderHint(QPainter::Antialiasing);
painter.setTransform(imageToVirtual() * virtualToWidget(), true);
painter.setPen(Qt::NoPen);
painter.setBrush(QColor(mask_color));
#ifndef Q_WS_X11
// That's how it's supposed to be.
painter.setCompositionMode(QPainter::CompositionMode_Clear);
#else
// QPainter::CompositionMode_Clear doesn't work for arbitrarily shaped
// objects on X11, as well as CompositionMode_Source with a transparent
// brush. Fortunately, CompositionMode_DestinationOut with a non-transparent
// brush does actually work.
painter.setCompositionMode(QPainter::CompositionMode_DestinationOut);
#endif
typedef PictureLayerProperty PLP;
// First pass: ERASER1
BOOST_FOREACH(EditableZoneSet::Zone const& zone, m_zones) {
if (zone.properties()->locateOrDefault<PLP>()->layer() == PLP::ERASER1) {
painter.drawPolygon(zone.spline()->toPolygon(), Qt::WindingFill);
}
}
painter.setCompositionMode(QPainter::CompositionMode_SourceOver);
// Second pass: PAINTER2
BOOST_FOREACH (EditableZoneSet::Zone const& zone, m_zones) {
if (zone.properties()->locateOrDefault<PLP>()->layer() == PLP::PAINTER2) {
painter.drawPolygon(zone.spline()->toPolygon(), Qt::WindingFill);
}
}
#ifndef Q_WS_X11
// That's how it's supposed to be.
painter.setCompositionMode(QPainter::CompositionMode_Clear);
#else
// QPainter::CompositionMode_Clear doesn't work for arbitrarily shaped
// objects on X11, as well as CompositionMode_Source with a transparent
// brush. Fortunately, CompositionMode_DestinationOut with a non-transparent
// brush does actually work.
painter.setCompositionMode(QPainter::CompositionMode_DestinationOut);
#endif
// Third pass: ERASER1
BOOST_FOREACH (EditableZoneSet::Zone const& zone, m_zones) {
if (zone.properties()->locateOrDefault<PLP>()->layer() == PLP::ERASER3) {
painter.drawPolygon(zone.spline()->toPolygon(), Qt::WindingFill);
}
}
}
示例5: drawTabs
void HorizontalPaintingStrategy::drawTabs(const KoRulerPrivate *d, QPainter &painter)
{
if (! d->showTabs)
return;
QPolygonF polygon;
painter.setBrush(d->ruler->palette().color(QPalette::Text));
painter.setRenderHint( QPainter::Antialiasing );
foreach (const KoRuler::Tab & t, d->tabs) {
qreal x;
if (d->rightToLeft)
x = d->viewConverter->documentToViewX(d->activeRangeEnd - t.position)
+ d->offset;
else
x = d->viewConverter->documentToViewX(d->activeRangeStart + t.position)
+ d->offset;
polygon.clear();
switch (t.type) {
case QTextOption::LeftTab:
polygon << QPointF(x+0.5, d->ruler->height() - 8.5)
<< QPointF(x-5.5, d->ruler->height() - 2.5)
<< QPointF(x+0.5, d->ruler->height() - 2.5);
painter.drawPolygon(polygon);
break;
case QTextOption::RightTab:
polygon << QPointF(x+0.5, d->ruler->height() - 8.5)
<< QPointF(x+6.5, d->ruler->height() - 2.5)
<< QPointF(x+0.5, d->ruler->height() - 2.5);
painter.drawPolygon(polygon);
break;
case QTextOption::CenterTab:
polygon << QPointF(x+0.5, d->ruler->height() - 8.5)
<< QPointF(x-5.5, d->ruler->height() - 2.5)
<< QPointF(x+6.5, d->ruler->height() - 2.5);
painter.drawPolygon(polygon);
break;
case QTextOption::DelimiterTab:
polygon << QPointF(x-5.5, d->ruler->height() - 2.5)
<< QPointF(x+0.5, d->ruler->height() - 8.5)
<< QPointF(x+6.5, d->ruler->height() - 2.5);
painter.drawPolyline(polygon);
break;
default:
break;
}
}
//painter.setRenderHint( QPainter::Antialiasing, false );
}
示例6: paint_label
void TimeMarker::paint_label(QPainter &p, const QRect &rect, bool hover)
{
if (!enabled())
return;
const qreal x = get_x();
const QRectF r(label_rect(rect));
const QPointF points[] = {
r.topLeft(),
r.bottomLeft(),
QPointF(max(r.left(), x - ArrowSize), r.bottom()),
QPointF(x, rect.bottom()),
QPointF(min(r.right(), x + ArrowSize), r.bottom()),
r.bottomRight(),
r.topRight()
};
const QPointF highlight_points[] = {
QPointF(r.left() + 1, r.top() + 1),
QPointF(r.left() + 1, r.bottom() - 1),
QPointF(max(r.left() + 1, x - ArrowSize), r.bottom() - 1),
QPointF(min(max(r.left() + 1, x), r.right() - 1),
rect.bottom() - 1),
QPointF(min(r.right() - 1, x + ArrowSize), r.bottom() - 1),
QPointF(r.right() - 1, r.bottom() - 1),
QPointF(r.right() - 1, r.top() + 1),
};
if (selected()) {
p.setPen(highlight_pen());
p.setBrush(Qt::transparent);
p.drawPolygon(points, countof(points));
}
p.setPen(Qt::transparent);
p.setBrush(hover ? color_.lighter() : color_);
p.drawPolygon(points, countof(points));
p.setPen(color_.lighter());
p.setBrush(Qt::transparent);
p.drawPolygon(highlight_points, countof(highlight_points));
p.setPen(color_.darker());
p.setBrush(Qt::transparent);
p.drawPolygon(points, countof(points));
p.setPen(select_text_color(color_));
p.drawText(r, Qt::AlignCenter | Qt::AlignVCenter, get_text());
}
示例7: virt_rect
void
ImageView::onPaint(QPainter& painter, InteractionState const& interaction)
{
painter.setRenderHint(QPainter::Antialiasing, false);
painter.setRenderHint(QPainter::SmoothPixmapTransform, true);
painter.setPen(Qt::NoPen);
QRectF const virt_rect(virtualDisplayRect());
switch (m_virtLayout.type()) {
case PageLayout::SINGLE_PAGE_UNCUT:
painter.setBrush(QColor(0, 0, 255, 50));
painter.drawRect(virt_rect);
return; // No Split Line will be drawn.
case PageLayout::SINGLE_PAGE_CUT:
painter.setBrush(QColor(0, 0, 255, 50));
painter.drawPolygon(m_virtLayout.singlePageOutline());
break;
case PageLayout::TWO_PAGES:
painter.setBrush(m_leftPageRemoved ? QColor(0, 0, 0, 80) : QColor(0, 0, 255, 50));
painter.drawPolygon(m_virtLayout.leftPageOutline());
painter.setBrush(m_rightPageRemoved ? QColor(0, 0, 0, 80) : QColor(255, 0, 0, 50));
painter.drawPolygon(m_virtLayout.rightPageOutline());
break;
}
painter.setRenderHint(QPainter::Antialiasing, true);
painter.setWorldTransform(QTransform());
QPen pen(QColor(0, 0, 255));
pen.setCosmetic(true);
pen.setWidth(2);
painter.setPen(pen);
painter.setBrush(Qt::NoBrush);
int const num_cutters = m_virtLayout.numCutters();
for (int i = 0; i < num_cutters; ++i) {
QLineF const cutter(widgetCutterLine(i));
painter.drawLine(cutter);
QRectF rect(m_handlePixmap.rect());
rect.moveCenter(cutter.p1());
painter.drawPixmap(rect.topLeft(), m_handlePixmap);
rect.moveCenter(cutter.p2());
painter.drawPixmap(rect.topLeft(), m_handlePixmap);
}
}
示例8: drawShape
void ECBJT::drawShape( QPainter &p )
{
const int _x = int(x());
const int _y = int(y());
initPainter(p);
p.drawLine( _x-8, _y-8, _x-8, _y+8 );
p.drawLine( _x+8, _y-8, _x-8, _y );
p.drawLine( _x+8, _y+8, _x-8, _y );
QPolygon pa(3);
if ( m_bIsNPN )
{
pa[0] = QPoint( _x+6, _y+7 );
pa[1] = QPoint( _x+2, _y+8 );
pa[2] = QPoint( _x+5, _y+3 );
}
else
{
pa[0] = QPoint( _x-7, _y+1 );
pa[1] = QPoint( _x-4, _y+5 );
pa[2] = QPoint( _x-2, _y );
}
p.setBrush( p.pen().color() );
p.drawPolygon(pa);
deinitPainter(p);
}
示例9: drawShape
void ECPotentiometer::drawShape( QPainter &p )
{
initPainter(p);
int _x = int(x());
int _y = int(y());
p.drawRect( _x-14, _y-16, 12, 32 );
Q3PointArray pa(3);
pa[0] = QPoint( 0, 0 );
pa[1] = QPoint( 4, -3 );
pa[2] = QPoint( 4, 3 );
int space = m_pSlider->style().pixelMetric( QStyle::PM_SliderSpaceAvailable, m_pSlider );
int base_y = _y + int( space * m_sliderProp );
pa.translate( _x + 16, base_y );
// QColor c = m_p1->isSelected() ? m_selectedCol : black;
// FIXME ^ >
// p.setPen(c);
// p.setBrush(c);
p.drawPolygon(pa);
p.drawLine( _x + 20, base_y, _x + 24, base_y );
p.drawLine( _x + 24, base_y, _x + 24, _y );
deinitPainter(p);
}
示例10: drawShape
void JunctionFlowNode::drawShape ( QPainter &p )
{
const int _x = ( int ) x();
const int _y = ( int ) y();
if ( !m_inFlowConnList.isEmpty() )
{
const FlowConnectorList::iterator end = m_inFlowConnList.end();
for ( FlowConnectorList::iterator it = m_inFlowConnList.begin(); it != end; ++ it )
{
Connector * connector = *it;
if ( !connector )
continue;
// Work out the direction of the connector
const QPointList points = connector->connectorPoints ( false );
const int count = points.size();
if ( count < 2 )
continue;
QPoint end_0 = points[count-1];
QPoint end_1 = points[count-2];
Q3PointArray pa;
if ( end_0.x() < end_1.x() )
{
pa = arrowPoints ( 180 );
pa.translate ( 4, 0 );
}
else if ( end_0.x() > end_1.x() )
{
pa = arrowPoints ( 0 );
pa.translate ( -4, 0 );
}
else if ( end_0.y() < end_1.y() )
{
pa = arrowPoints ( 270 );
pa.translate ( 0, 4 );
}
else if ( end_0.y() > end_1.y() )
{
pa = arrowPoints ( 90 );
pa.translate ( 0, -4 );
}
else continue;
pa.translate ( _x, _y );
p.setPen ( connector->isSelected() ? m_selectedColor : Qt::black );
p.drawPolygon ( pa );
}
return;
}
if ( m_dir == 0 ) p.drawLine ( _x, _y, _x-8, _y );
else if ( m_dir == 90 ) p.drawLine ( _x, _y, _x, _y-8 );
else if ( m_dir == 180 ) p.drawLine ( _x, _y, _x+8, _y );
else if ( m_dir == 270 ) p.drawLine ( _x, _y, _x, _y+8 );
}
示例11: drawTerminalState
void RRTWidget::drawTerminalState(QPainter &painter, const Vector2f &pos, const Vector2f &vel, const QColor &color) {
// draw point
painter.setPen(QPen(color, 6));
QPointF rootLoc(pos.x(), pos.y());
painter.drawEllipse(rootLoc, 2, 2);
Vector2f tipOffset = vel * VelocityDrawingMultiplier;
Vector2f tipLocVec = pos + tipOffset;
QPointF tipLoc(tipLocVec.x(), tipLocVec.y());
// draw arrow shaft
painter.setPen(QPen(color, 3));
painter.drawLine(rootLoc, tipLoc);
// draw arrow head
Vector2f headBase = tipLocVec - tipOffset.normalized()*4;
Vector2f perp = Vector2f(-tipOffset.y(), tipOffset.x()).normalized();
Vector2f tipLeftVec = headBase + perp*4;
Vector2f tipRightVec = headBase - perp*4;
QPointF trianglePts[] = {
tipLoc,
QPointF(tipLeftVec.x(), tipLeftVec.y()),
QPointF(tipRightVec.x(), tipRightVec.y())
};
painter.drawPolygon(trianglePts, 3);
}
示例12: drawShape
void ArrowLine::drawShape(QPainter &p)
{
p.setPen(darkGray);
QCanvasLine::drawShape(p);
double angle = computeAngle(startPoint().x(),
startPoint().y(),
endPoint().x(),
endPoint().y());
QPointArray pts(3);
QWMatrix m;
int x, y;
m.rotate(angle);
m.map(-5, -2, &x, &y);
pts.setPoint(0, x, y);
m.map(-5, 2, &x, &y);
pts.setPoint(1, x, y);
m.map(0, 0, &x, &y);
pts.setPoint(2, x, y);
pts.translate(endPoint().x(), endPoint().y());
p.setBrush(QColor(darkGray));
p.drawPolygon(pts);
}
示例13: paintEvent
void Graph::paintEvent(QPaintEvent *)
{
QPainter painter;
painter.begin(this);
painter.setBackground(background);
painter.eraseRect(rect());
QPoint *points = new QPoint[MAX_DATA_LENGTH +2];
points[0] = QPoint(0,150);
points[MAX_DATA_LENGTH +1] = QPoint(MAX_DATA_LENGTH,150);
for (int s = 0; s < MAX_DATA_LENGTH; s++){
points[s +1] = QPoint(s,100 - data.at(data.length() - s -1));
}
painter.setPen(gridPen);
painter.setBrush(filler);
for (int s = 0; s < MAX_DATA_LENGTH / 30; s++){
painter.drawLine(MAX_DATA_LENGTH - 30 * (s+1), 0,MAX_DATA_LENGTH - 30 * (s+1), 100);
}
for (int s = 0; s < 10; s++){
painter.drawLine(0, 10*s,MAX_DATA_LENGTH, 10*s);
}
painter.setRenderHint(QPainter::Antialiasing);
painter.setPen(circlePen);
painter.drawPolygon(points,MAX_DATA_LENGTH +2);
painter.end();
delete points;
}
示例14: grabRect
void FreeRegionGrabber::grabRect()
{
QPolygon pol = selection;
if ( !pol.isEmpty() )
{
grabbing = true;
int xOffset = pixmap.rect().x() - pol.boundingRect().x();
int yOffset = pixmap.rect().y() - pol.boundingRect().y();
QPolygon translatedPol = pol.translated(xOffset, yOffset);
QPixmap pixmap2(pol.boundingRect().size());
pixmap2.fill(Qt::transparent);
QPainter pt;
pt.begin(&pixmap2);
if (pt.paintEngine()->hasFeature(QPaintEngine::PorterDuff)) {
pt.setRenderHints(QPainter::Antialiasing | QPainter::HighQualityAntialiasing | QPainter::SmoothPixmapTransform, true);
pt.setBrush(Qt::black);
pt.setPen(QPen(QBrush(Qt::black), 0.5));
pt.drawPolygon(translatedPol);
pt.setCompositionMode(QPainter::CompositionMode_SourceIn);
} else {
pt.setClipRegion(QRegion(translatedPol));
pt.setCompositionMode(QPainter::CompositionMode_Source);
}
pt.drawPixmap(pixmap2.rect(), pixmap, pol.boundingRect());
pt.end();
emit freeRegionUpdated(pol);
emit freeRegionGrabbed(pixmap2);
}
}
示例15: drawHexagon
void ClsQStateArrayViewHex::drawHexagon(QPainter &paint, int iXCenter, int iYCenter, int iVertexlength, int /* iOrientation */){
const double f = 1.7320508;
iXCenter = iXCenter + (int)((double)iVertexlength/4. * f);
iYCenter = iYCenter + (int)((double)iVertexlength/2.) ;
QPointArray pa(6);
/*
pa[0] = QPoint(iVertexlength / 2,0);
pa[1] = QPoint(iVertexlength / 4 ,-iVertexlength / 4 * f);
pa[2] = QPoint(-iVertexlength / 4,-iVertexlength / 4 * f);
pa[3] = QPoint(-iVertexlength / 2,0);
pa[4] = QPoint(-iVertexlength / 4,iVertexlength / 4 * f);
pa[5] = QPoint(iVertexlength / 4 ,iVertexlength / 4 * f);
*/
pa[0] = QPoint(0, (int)(-iVertexlength/2));
pa[1] = QPoint((int)(iVertexlength / 4 * f), (int)(-iVertexlength / 4));
pa[2] = QPoint((int)(iVertexlength / 4 * f), (int)(iVertexlength / 4));
pa[3] = QPoint(0, (int)(iVertexlength/2));
pa[4] = QPoint((int)(-iVertexlength / 4 * f), (int)(iVertexlength / 4));
pa[5] = QPoint((int)(-iVertexlength / 4 * f), (int)(-iVertexlength / 4));
pa.translate(iXCenter, iYCenter);
paint.drawPolygon ( pa, false );
}