C++ (Qt)MyItem::MyItem(QGraphicsItem *parent) : QGraphicsItem(parent){ dpiX=0; dpiY=0; width=100; height=100;} QRectF MyItem::boundingRect() const{ return QRectF (0,0,width+2,height+2);} void MyItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget){ QPaintDevice *device=painter->paintEngine()->paintDevice(); int dX=device->logicalDpiX(); int dY=device->logicalDpiY(); if ((dpiX!=dX)||(dpiY!=dY)) { dpiX=dX; dpiY=dY; width=int(sizeX*dX/25.4); // sizeX и sizeY - размеры в миллиметрах height=int(sizeY*dY/25.4); this->prepareGeometryChange(); // невнимательно читал Assistant, упустил из виду, потому утверждения про "пролетающий" boundingRect не верны } painter->drawRect(0,0,width,height);}