标题:画线第一条线宽大小不一
作者:草长莺飞
日期:2020-03-17 17:13
内容:
继承QWidget,自绘制线发现第一条线线宽少了一个像素
void GridCanvas::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
QPen pPenSolid;
pPenSolid.setStyle(Qt::SolidLine);//实线笔
pPenSolid.setWidth(2);
painter.setPen(pPenSolid);
QRect r = this->rect();
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
int x1 = r.left() + (j* r.width() / 3);
int x2 = r.left() + (j + 1)* r.width() / 3;
int y1 = r.top() + i * r.height() / 3;
int y2 = y1;
painter.drawLine(x1,y1,x2,y2);
}
}
}
#1 [maxlogo 03-17 18:31]
第一条线超出了widget外面了,你y1多加几个像素就可以看到了
#2 回 maxlogo 的帖子 [草长莺飞 03-19 09:17]
maxlogo:第一条线超出了widget外面了,你y1多加几个像素就可以看到了 (2020-03-17 18:31)
是的我嘉一个像素都能显示出来了 但为什么超出了widget外面了呢,坐标系不是从(0,0)开始?
#3 [dbzhang800 03-19 12:01]
你要在高度为x处画一条宽度为2w的水平线,你是期望它的高度范围是
x-w ~ x+w
还是
x, x ~ 2w
亦或是
x-2w, x
#4 回 dbzhang800 的帖子 [草长莺飞 03-19 12:13]
dbzhang800:你要在高度为x处画一条宽度为2w的水平线,你是期望它的高度范围是
x-w ~ x+w
还是
....... (2020-03-19 12:01)
x, x ~ 2w
#5 [yuyu414 03-19 16:17]
可以看一下QPainter的文档,因为pen width的影响,默认是把pen width的中间作为起点,这样就导致有一半的pen width 在< 0的地方。