我正在使用QT 5.7和C++进行编程。
目前我正在尝试使用QPainter类绘制自己的小部件。
但是我注意到了一个问题,我无法解决。
我试图在小部件边界上精确地绘制边框线,但是如果我这样做:
线条在底部和右侧比其他地方要大:
在有人告诉我必须删除两个-1表达式之前,您应该知道如果我这样做并且将笔宽度设置为1,那么底部和右侧就没有线条了。
我认为这个伪像是由“线对齐”引起的。 QT试图着色与矩形定义的逻辑线附近的像素,但实际上因为最终所有像素都必须在像素中决定。 如果我是正确的,为什么没有方法可以像GDI +一样设置笔的线对齐方式? 我该如何解决这个问题?
void MyWidget::paintEvent(QPaintEvent *event)
{
QPainter painter;
painter.begin(this);
painter.setBrush(Qt::cyan);
QBrush brush(Qt::black);
QPen pen(brush, 2);
painter.setPen(pen);
painter.drawRect(0, 0, size().width() - 1, size().height() - 1);
painter.end();
}
线条在底部和右侧比其他地方要大:
![problem](https://istack.dev59.com/kzk4r.webp)
在有人告诉我必须删除两个-1表达式之前,您应该知道如果我这样做并且将笔宽度设置为1,那么底部和右侧就没有线条了。
![problem](https://istack.dev59.com/GVEPf.webp)
我认为这个伪像是由“线对齐”引起的。 QT试图着色与矩形定义的逻辑线附近的像素,但实际上因为最终所有像素都必须在像素中决定。 如果我是正确的,为什么没有方法可以像GDI +一样设置笔的线对齐方式? 我该如何解决这个问题?