मुझे एक ही समस्या में आई, और इसे समझने में मुझे कुछ समय लगा। इस तरह मैंने इसे हल किया।
एक QGraphicsItem वर्ग बढ़ाएं, पेंट ओवरराइड करें()। पेंट() के अंदर, परिवर्तन के स्केलिंग कारक को 1 (जो एम 11 और एम 22 हैं) को रीसेट करें, और रीसेट से पहले एम 11 (एक्स स्केलिंग कारक) और एम 22 (वाई स्केलिंग कारक) को सहेजें। फिर, सामान्य रूप से ऐसा करें जैसे ड्रॉ करें लेकिन एम 22 के साथ एम एक्स और वाई के साथ अपने एक्स को गुणा करें। यह डिफ़ॉल्ट परिवर्तन के साथ चित्रण से बचाता है, लेकिन स्पष्ट रूप से दृश्य के परिवर्तन के अनुसार पदों की गणना करता है।
void MyItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *item, QWidget *widget)
{
QTransform t = painter->transform();
qreal m11 = t.m11(), m22 = t.m22();
painter->save(); // save painter state
painter->setTransform(QTransform(m11, t.m12(), t.m13(),
t.m21(), 1, t.m23(), t.m31(),
t.m32(), t.m33()));
int x = 0, y = 0; // item's coordinates
painter->drawText(x*m11, y*m22, "Text"); // the text itself will not be scaled, but when the scene is transformed, this text will still anchor correctly
painter->restore(); // restore painter state
}
निम्नलिखित कोड ब्लॉक डिफ़ॉल्ट परिवर्तन के साथ आ रहा है
void MyItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *item, QWidget *widget)
{
int x = 0, y = 0;
painter->drawText(x, y, "Text");
}
आप दोनों का अंतर देखने की कोशिश कर सकते हैं। उम्मीद है की यह मदद करेगा।
इसके अलावा http://doc.trolltech.com/4.5/qpen.html#setCosmetic एक चोटी पर आप एक कस्टम रंग दिनचर्या – mpen