QPainter drawRect 到现有图像绘制圆边而不是锐边。如何绘制锐利的边缘?

时间:2021-06-01 16:31:08

标签: qt qpainter

我的目标是在图像上绘制图形并保存到文件。在这个简化的示例中,我为 QPainter 准备了一个图像,然后通过 drawRect 将一个矩形绘制到现有图像上并保存到一个文件中。结果图像显示组合图像,但矩形显示圆角边缘而不是锐利边缘。如何解决?感谢您的帮助。

include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QPainter>
#include <QImage>
#include <QPen>
void paint_Object(QPainter *painter)
{
    QPen pen;
    pen.setWidth(40);
    pen.setColor(Qt::red);
    QRect rect;

    painter->setPen(pen);
    rect.setTopLeft(QPoint(100,100));
    rect.setWidth(100);
    rect.setHeight(200);
    painter->drawRect(rect);
}

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QString filename_in = "C:/Users/seany/VideoAd/temp/test.png";
    QString filename_out = "C:/Users/seany/VideoAd/temp/test_out.png";

    //Setup initial
    QImage test_image(filename_in);

    //Setup Painter with initial Image
    QPainter painter(&test_image);

    //Paint an overlaid image onto initial image
    paint_Object(&painter);

    //Write resultant image to file
    test_image.save(filename_out);
}

MainWindow::~MainWindow()
{
    delete ui;
}

1 个答案:

答案 0 :(得分:0)

QPen 连接样式的默认值为 Qt::BevelJoin。这就是它的圆形边缘。将 pen.setJoinStyle(Qt::MiterJoin) 用于扩展或锐利的边缘。 如需更多信息,请阅读this