大家好,请教一下:使用QMatrix或者QPainter进行Scale缩放的时候,会影响外围边框的粗细和颜色深浅,希望保持最初始的粗细和颜色深浅,有好的方法解决吗。
painter.save();
painter.scale(0.5, 0.5); 缩放
painter.setPen(QPen(Qt::black, 3)); // 设置画笔的大小,依然达不到效果。猜想是画笔大小也被应用了worldMatrix 变换了。
painter.drawPath(QPainter Pathshape); 以默认画笔绘制路径
painter.restore();
每执行一次上面的代码,线宽就缩小一半,颜色也变浅。同样如何放大的话,线宽变粗,颜色变深。
我学习了一下GDI+的缩放部分:
Matrix matrix;
Matrix.Rotate(30.0f);//旋转顺时针30度
Matrix.Scale(0.5f,0.5f) 缩小一半
Path.Transform(&matrix);//应用变形
g.DrawPath(&Pen(Color(255,0,0,0),3),&path);
其DrawPath函数可以设置绘制的画笔的宽度。因此我也在上面QT代码中添加了设置画笔大小的语句,达不到效果。另外也尝试用了painter.setWorldMatrixEnabled(0/1)来取消变换矩阵对画笔大小的影响,也没有达到效果。 现在我猜想是不是利用当前的变换矩阵来反推画笔应该有的大小,但是这样会不会导致画笔大小显示的混乱。
请问大家,谁有好的解决方法,非常感谢!