Qt와 Windows 문자 회전 호환

1532 단어 화상 처리
qt 그리기 rect는 왼쪽 상단을 회전 중심으로 하고, 그리기 문자는 왼쪽 하단을 회전 중심으로 합니다.
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);//     

}

좋은 웹페이지 즐겨찾기