QT QPainter绘制文字、图片

1. 把字符串绘制在QPixmap上

QPixmap MainWindow::text2Pixmap(QString text)
{
    QFontMetrics fmt(m_font);
    QPixmap result(fmt.width(text), fmt.height());
  
    QRect rect(0,0,fmt.width(text), fmt.height());
    result.fill(Qt::transparent);
    QPainter painter(&result);
    painter.setFont(m_font);
    painter.setPen(QColor(255,143,36));
    //painter.drawText(const QRectF(fmt.width(text), fmt.height()),Qt::AlignLeft, text);
    painter.drawText((const QRectF)(rect),text);
    return result;
}

2. 对图片进行水平拼接

//多张图片拼接合成一张图片
QPixmap MainWindow::pinjie(QVector image)
{

        int image_width=0;
        int max_height = 0;
        QVector  ::iterator it;
        for(it = image.begin();it!=image.end();++it)
        {
            int width = (*it).width();
            image_width += width;
            image_width +=5;
            if((*it).height()>max_height)
            {
                max_height =(*it).height();
            }
        }
        QPixmap result_image_h(image_width,max_height);
        result_image_h.fill(Qt::transparent);
        QPainter painter_h;
        painter_h.begin(&result_image_h);
        int x_number=0;
        for(it = image.begin();it!=image.end();++it)
        {
            painter_h.drawPixmap(x_number,0,(*it));
            x_number += (*it).width();
            x_number +=5;
        }
        painter_h.end();
        return result_image_h;
}

3. 把一张图片绘制在空白图片上

QPixmap  MainWindow::zoomOutPix(QPixmap pix ,int addWidth, int addHeight)
{
    // addWidth pix增加的宽度,addHeight pix增加的高度
    QPixmap res(pix.width() + addWidth, pix.height() + addHeight);
    res.fill(Qt::transparent);
    QPainter painter(&res);
    painter.drawPixmap(addWidth/2, addHeight/2, pix.width(), pix.height(), pix);
    return res;
}

4. 把一张图片绘制在另外一张图片上

//一张图片绘制在另外一张图片上
QPixmap MainWindow::dijia(QPixmap p1, QPixmap p2)
{
    //p1作为底片, p2绘制在p1图片上
    QPainter painter(&p1);
    painter.drawPixmap(0,0,p2.width(),p2.height(), p2);
    return p1;

}

5. 图片的缩放

使用scaled函数进行图片的缩放。

QT QPainter绘制文字、图片_第1张图片

QT QPainter绘制文字、图片_第2张图片

    //缩放
    QString str = QString::fromLocal8Bit("(侏罗纪)");
    QPixmap p = text2Pixmap(str);
    p = p.scaled(100, 30, Qt::KeepAspectRatio, Qt::SmoothTransformation);
   

6. Qt快捷键

添加注释: Ctrl + /       

代码格式快速对齐:Ctrl  + A ,Ctrl + I

 

你可能感兴趣的:(Qt学习)