Qt와 Windows 문자 회전 호환
1532 단어 화상 처리
windows에서 rect와 텍스트를 그립니다. 왼쪽 상단을 회전 중심으로
좌표 회전을 실현하기 위해 아래 코드에 따라 처리하고 코드를 훑어 마음대로 돌립니다.
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "qpainter.h"
#include
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::paintEvent(QPaintEvent* event)
{
QPainter painter(this);
int iFontSize=30;
QFont font(" ",iFontSize);
font.setLetterSpacing(QFont::PercentageSpacing,0);
font.setLetterSpacing(QFont::AbsoluteSpacing,0);
QPoint ptCenter(100,100);
QRect rt(0,0,100,100);
QString strText(" ");
QFontMetrics fm(font);
//QRect rtText = fm.boundingRect(strText);
int w=fm.width(strText);
int h=fm.height();
QRect rtText(0,0,w,h);
painter.setFont(font);
painter.save();
painter.translate(ptCenter);
painter.rotate(45);
painter.fillRect(rt,QBrush(Qt::blue));
int x=0;
int y=0;
//painter.fillRect(x,y,rtText.width(),rtText.height(),QBrush(Qt::green));
painter.fillRect(rtText,QBrush(Qt::green));
painter.drawText(x,y+h-iFontSize/3.," ");// /3 qt
painter.restore();
QPen mypen;
mypen.setWidth(5);
mypen.setColor(Qt::black);
painter.setPen(mypen);
painter.drawPoint(ptCenter);//
}