Преобразование QPolygon - PullRequest
       27

Преобразование QPolygon

1 голос
/ 06 января 2012

Необходимо преобразовывать вершины многоугольника на лету до точки начала 0,0 (вместо центра).

У меня есть многоугольник (8x64) (с предопределенной вершиной):

QPolygonF cursor;
cursor << QPointF(-4, 32); 
cursor << QPointF(-4, -32);
cursor << QPointF(4, -32);
cursor << QPointF(4, 32);

Затем я рисую его и использую в качестве курсора:

QPixmap pixmap( cursor.boundingRect().width()+1, cursor.boundingRect().height()+1 );
pixmap.fill( QColor( Qt::black) );

QPixmap alpha = pixmap.createMaskFromColor(QColor( Qt::black ),Qt::MaskOutColor);
pixmap.setAlphaChannel( alpha );

QPainter painter( &pixmap );
painter.setPen( QPen( Qt::green) );

// move to center, because polygon coordinated starts from center
painter.translate(cursor.boundingRect().width()/2, cursor.boundingRect().height()/2 );
painter.drawPolygon( cursor );

setCursor( pixmap );

Но после щелчка мышью у меня появляется положение мыши в центре этого многоугольника, это нормально и логично.

Вопрос , как преобразовать многоугольник на лету (преобразовать матрицу или тому подобное) в исходную точку 0,0 и получить после щелчка мышью верхнюю, левую координаты (вместо центра)?

...