平滑一条斜线

Get*_*ter 6 c++ qt lines

我没有找到一种正确的方法来绘制平滑的倾斜线,而不会在Qt中使用QPainterPath对象过度像素化.

请注意,我知道在paintEvent函数中绘制路径没有意义,为了简单起见,我把它放在那里.我正试图直接在中央小部件中绘制线条.

以下是我的代码片段:

void MyObject::paintEvent(QPaintEvent *)
{
    QPainterPath aPath;
    aPath.moveTo(40.0, 60.0); //random values to try
    aPath.lineTo(254, 354.0);

    QPainter painter(this);
    painter.setPen(QPen(QColor(20, 20, 200), 10, Qt::SolidLine));
    painter.drawPath(aPath);
}
Run Code Online (Sandbox Code Playgroud)

这是我得到的结果:

在此输入图像描述

太可怕了!我可以绘制的唯一美丽线条是水平,垂直或45°倾斜......

csu*_*y95 4

如果您正在寻找绘图质量,Qt 文档提供了使用其渲染质量标志的说明性示例5.X 版本)。通常,您可以使用此处指定的标志5.X 版本),并使用QPainter::setRenderHint()5.X 版本)函数设置它们。看看您是否能够使用这些方法达到所需的质量。对于你的代码,你会寻找类似的东西

QPainter painter(this);
painter.setRenderHint(QPainter::SmoothPixmapTransform, true);
painter.setRenderHint(QPainter::HighQualityAntialiasing, true);
painter.setPen(QPen(QColor(20, 20, 200), 10, Qt::SolidLine));
painter.drawPath(aPath);
Run Code Online (Sandbox Code Playgroud)