qt – 缩放QGraphicsView时调整QPen厚度?

前端之家收集整理的这篇文章主要介绍了qt – 缩放QGraphicsView时调整QPen厚度?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
QGraphicsView的一个惊人功能是它能够根据场景的内容进行缩放(实际上每个QGraphicsItem都插入到场景中).我插入的QPixmap正确缩放,这意味着如果我提供4×4的比例因子:
view->scale(4,4);

像我想要的那样缩放Pixmap.

但这不是我习惯绘画的情况;它们的目的是围绕我在场景上绘制的像素图,无论比例因子如何,它们都保持1的厚度而不是 – 我猜 – 4.

我一直在搜索关于所有这些东西的文档,试图找出“化妆笔”的确切目的,但我仍然无法让我的矩形更厚.

最后通知:我有一个自定义的QGraphicsItem,用于绘制矩形的QPen在运行中即时实现

virtual void paint(QPainter *painter,const QStyleOptionGraphicsItem *option,QWidget *widget);

方法.

有关系吗?

在此感谢您对我在Qt框架和绘图算法领域缺乏经验/知识表示歉意……

解决方法

在实例化QPen的位置并不重要.

QPen的默认宽度为0.这是一个特殊值,表示化妆品为真,宽度实际为1.因此,如果您不希望笔是化妆品,则必须将其设置为所需的宽度.您可能还需要将化妆品设置为false.

这是一个简单的例子:

#include <QtGui>

int main(int argc,char *argv[])
{
    QApplication a(argc,argv);

    QGraphicsView view;
    QGraphicsScene scene;

    QGraphicsRectItem *item1 = scene.addRect(20,20,20);
    QGraphicsRectItem *item2 = scene.addRect(50,20);

    QPen pen1,pen2;
    pen1.setWidth(5);
    pen2.setWidth(5);
    pen1.setCosmetic(true);
    pen2.setCosmetic(false);

    item1->setPen(pen1);
    item2->setPen(pen2);

    view.setScene(&scene);
    view.scale(4,4); // both rects are the same size,but one a has wider pen
    view.show();

    return a.exec();
}
原文链接:https://www.f2er.com/css/216088.html

猜你在找的CSS相关文章