本文整理汇总了C++中QPolygon::point方法的典型用法代码示例。如果您正苦于以下问题:C++ QPolygon::point方法的具体用法?C++ QPolygon::point怎么用?C++ QPolygon::point使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QPolygon
的用法示例。
在下文中一共展示了QPolygon::point方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: map
// The new function using fixed point multiplication
QPolygon MapMatrix::map(const QPolygon &a) const
{
int size = a.size();
int64_t fx;
int64_t fy;
int32_t curx;
int32_t cury;
int32_t lastx = 0;
int32_t lasty = 0;
QPolygon p;
for( int i = 0; i < size; i++ )
{
a.point(i, &curx, &cury);
fx = itofp24p8( curx );
fy = itofp24p8( cury );
// some cheating involved; multiplication with the "wrong" macro
// after "left shifting" the "m" value in createMatrix
curx = fp24p8toi( mulfp8p24(m11,fx) + mulfp8p24(m21,fy) + dx);
cury = fp24p8toi( mulfp8p24(m22,fy) + mulfp8p24(m12,fx) + dy);
if ( (i==0) | ( ((curx - lastx) | (cury - lasty)) != 0) )
{
p.append(QPoint(curx, cury));
lastx = curx;
lasty = cury;
}
}
return p;
}
示例2: QImage
QImage * SeamCarver::extendWidth(int w_extent,bool compression,bool afficheLignes)
{
QPolygon *ligneBest;// = listLignesMostSuitable.first();
QRgb color1,color2;
int y_ligneBest;
QPoint pp;
int extendedSize = 0;//2*w_extent;
if (!afficheLignes)
extendedSize = (compression) ? -w_extent : w_extent;
QImage *dataRet = new QImage(imgOrigine->width(),imgOrigine->height()+extendedSize,imgOrigine->format());
ImageResizer *resizer = new ImageResizer;
int delta_y,tmp_lect;
QList<int> list_y_val;
int counterExtractLignes = w_extent;
QListIterator<QPolygon *> qit(listLignesMostSuitable);
for (int x=0; x < imgOrigine->width() ; x++)
{
qit.toFront();
list_y_val.clear();
counterExtractLignes = w_extent;
while ((qit.hasNext()) && (counterExtractLignes >0))
{
ligneBest=qit.next();
list_y_val << (ligneBest->point(x)).y();
counterExtractLignes--;
}
qSort(list_y_val);
list_y_val << imgOrigine->height() + 1000;
y_ligneBest = list_y_val.takeFirst();
// pp=ligneBest->takeFirst();
//y_ligneBest=pp.y();
delta_y=0;
for (int y=0; y < imgOrigine->height() ; y++) {
color1=imgOrigine->pixel(x,y);
if ((afficheLignes) || (y != y_ligneBest))
{
int w_newPosition = y+delta_y;
if (w_newPosition < dataRet->height())
dataRet->setPixel(x,w_newPosition,color1);
} else
{
if (compression)
{
delta_y -= 1;
} else
{
dataRet->setPixel(x,y_ligneBest+delta_y,color1);
color2=imgOrigine->pixel(x,y+1);
resizer->interpol(dataRet,x,y_ligneBest+delta_y+1,1,color1,color2,false);
delta_y += 1;
}
y_ligneBest = list_y_val.takeFirst();
}
}
}
return dataRet;
}
示例3: clipEdge
void GraphPolygonClipper::clipEdge(Edge edge,
const QPolygon &pa, QPolygon &cpa) const
{
if ( pa.count() == 0 )
{
cpa.resize(0);
return;
}
unsigned int count = 0;
QPoint p1 = pa.point(0);
if ( insideEdge(p1, edge) )
addPoint(cpa, count++, p1);
const uint nPoints = pa.size();
for ( uint i = 1; i < nPoints; i++ )
{
const QPoint p2 = pa.point(i);
if ( insideEdge(p2, edge) )
{
if ( insideEdge(p1, edge) )
addPoint(cpa, count++, p2);
else
{
addPoint(cpa, count++, intersectEdge(p1, p2, edge));
addPoint(cpa, count++, p2);
}
}
else
{
if ( insideEdge(p1, edge) )
addPoint(cpa, count++, intersectEdge(p1, p2, edge));
}
p1 = p2;
}
cpa.resize(count);
}
示例4: paintChart
//.........这里部分代码省略.........
{
zMaxValue = round(zMaxValue, true);
MaxValue = zMaxValue;
}
}
paintTitle(p, rect);
paintLegend(p, rect);
paintAxis(p, rect);
std::list<QPolygon> Points;
int cp = 0;
int samples = countSamples();
int zeroy = int(rect.height() - 2 - ( -zMinValue / (zMaxValue - zMinValue) * (rect.height() - 4)));
if (samples > 1)
{
const QMatrix &mtx = p->worldMatrix();
p->setClipRect(int(mtx.dx() + 2), int(mtx.dy() + 2), rect.width() - 3, rect.height() - 3);
if (Zooming)
p->drawText(2, 2, rect.width() - 4, rect.height() - 4,
Qt::AlignLeft | Qt::AlignTop, tr("Zoom"));
std::list<bool>::reverse_iterator e = Enabled.rbegin();
for (std::list<std::list<double> >::reverse_iterator i = Values.rbegin(); i != Values.rend(); i++)
{
if (e == Enabled.rend() || *e)
{
std::list<double> &val = *i;
int count = 0;
int skip = SkipSamples;
QPolygon a(samples + 10);
int x = rect.width() - 2;
for (std::list<double>::reverse_iterator j = val.rbegin(); j != val.rend() && x >=
2;
j++)
{
if (skip > 0)
skip--;
else
{
int val = int(rect.height() - 2 - ((*j - zMinValue) / (zMaxValue - zMinValue) * (rect.height() - 4)));
x = rect.width() - 2 - count * (rect.width() - 4) / (samples - 1);
a.setPoint(count, x, val);
count++;
if (count >= samples)
break;
}
}
a.resize(count * 2);
Points.insert(Points.end(), a);
}
cp++;
if (e != Enabled.rend())
e++;
}
}
std::map<int, int> Bottom;
std::list<bool>::reverse_iterator e = Enabled.rbegin();
for (std::list<QPolygon>::iterator i = Points.begin(); i != Points.end();)
{
while (e != Enabled.rend() && !*e)
{
cp--;
e++;
}
if (e != Enabled.rend())
e++;
cp--;
QPolygon a = *i;
int lx = 0;
int lb = 0;
for (int j = 0; j < a.size() / 2; j++)
{
int x, y;
a.point(j, &x, &y);
if (Bottom.find(x) == Bottom.end())
Bottom[x] = 0;
if (lx != x)
lb = Bottom[x];
a.setPoint(a.size() - 1 - j, x, zeroy - lb);
y -= lb;
a.setPoint(j, x, y);
Bottom[x] = zeroy - y;
lx = x;
}
p->save();
QBrush brush(Utils::toChartBrush(cp));
p->setBrush(brush.color());
p->drawPolygon(a);
if (brush.style() != Qt::SolidPattern)
{
p->setBrush(QBrush(Qt::white, brush.style()));
p->drawPolygon(a);
}
p->restore();
i++;
}
}