Hallo,
ich habe Probleme unter Qt4 Text um eine bestimmte Gradzahl beim Zeichnen zu drehen.
Zum Zeichnen des Textes nutze ich QPainter::drawText().
Hab die Doku bereits durchforstet, aber ich finde nur die Funktion QPainter::rotate(), die mir aber nicht wirklich weiterhilft, da sie das gesamte Koordinatensystem im Ursprung dreht, und ich dann vor dem Problem stehe, die Positionskoordinaten zurückrechnen zu müssen.
Übersehe ich eine andere Möglichkeit, hat jemand eine Idee?
Text unter Qt4 gedreht zeichnen
mache doch vector text!
beim resize event muss man dann auf nichts achten...
dann must du nur noch die QMatrix aendern ... vieleicht auch qrect
In der anlage is alles drinnen ... macht einfach ein Vector Button...
beim resize event muss man dann auf nichts achten...
Code: Alles auswählen
void QPush1::paintText()
{
QPainter *pg = new QPainter(this);
pg->setRenderHint(QPainter::Antialiasing);
const int borderI = 18;
QPointF baseline(2,55 * 0.98); /* font size */
/* font size */
/* button text */
QPainterPath textPath;
QPainterPath textPath2;
textPath.addText(baseline,fontText,textBut); //// fontText is any font() //// textBut text one line
/* fix view from text */
const QRectF reo = textPath.boundingRect();
TXTrect = reo;
const QRectF paintArea( 0 , 0 , reo.width() + (borderI * 2), reo.height() + (borderI * 2) );
//////QPixmap imgtext(reo.size().toSize());
////////QPainter *p = new QPainter(&imgtext);
//////////p->setRenderHint(QPainter::Antialiasing);
pg->setWindow ( 0 , 0 , reo.width() + (borderI * 2), reo.height() + (borderI * 2) );
QRectF imagepos( borderI , borderI , reo.width() , reo.height() );
QPointF textline(borderI / 2 ,reo.height() + borderI );
textPath2.addText(textline,fontText,textBut);
if (pushed || focus || ActiveButton ) {
pg->setPen(QPen(Qt::red,1, Qt::SolidLine, Qt::RoundCap,Qt::RoundJoin));
pg->setBrush(Qt::gray);
pg->drawRect(paintArea);
pg->setBrush(colActiveText);
pg->drawPath(textPath2);
} else {
pg->setPen(QPen(Qt::lightGray,2, Qt::SolidLine, Qt::RoundCap,Qt::RoundJoin));
pg->setBrush(Qt::white);
pg->drawRect(paintArea);
pg->setBrush(colText);
pg->drawPath(textPath2);
}
pg->end();
QMatrix matrix;
matrix.scale(paintArea.width() / width(),paintArea.height() / height());
emit CurrentMatrix(matrix,paintArea);
}
In der anlage is alles drinnen ... macht einfach ein Vector Button...
- Dateianhänge
-
- qpush1.h
- (1.91 KiB) 174-mal heruntergeladen
-
- qpush1.cpp
- (5.52 KiB) 184-mal heruntergeladen
.........................
speack português italiano deutsch english castellà qt
speack português italiano deutsch english castellà qt