• 5548阅读
  • 0回复

请教:QMatrix缩放影响边框的粗细和颜色深浅 [复制链接]

上一主题 下一主题
离线dxwang
 

只看楼主 倒序阅读 楼主  发表于: 2009-11-25
请教:QMatrix缩放影响边框的粗细和颜色深浅
大家好,请教一下:使用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)来取消变换矩阵对画笔大小的影响,也没有达到效果。 现在我猜想是不是利用当前的变换矩阵来反推画笔应该有的大小,但是这样会不会导致画笔大小显示的混乱。

另外我也尝试过把painter.drawPath(QPainter Pathshape); 放到painter.restore()后面执行,但是这样的话,绘制出来的外框就是原来的外框,不是贴着缩小边界的外框了,也就是说绘制的路径是缩放之前的路径,呵呵。
不知道GDI+的DrawPath(&Pen(Color(255,0,0,0),3),&path);是如何处理这个画笔宽度 使之缩放前后没有任何变化,望大家指点,谢谢!
不知道Qt之后能不能解决这个问题。
每天进步一点点
快速回复
限100 字节
 
上一个 下一个