tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
1660
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Orbit
    Orbit Orbit ist offline Mitglied Gold
    Registriert seit
    Aug 2007
    Beiträge
    175
    Hallo,
    wie kann ich einen Buchstaben aus einer Font mit QPainter zeichnen, sodass er unabhängig von der gesetzten Schriftgröße der Font in ein bestimmtes Rechteck gemalt wird?

    void drawText ( const QRect & rectangle, int flags, const QString & text, QRect * boundingRect = 0 )

    Geht irgendwie nicht so wie ich es verstehe.
    Wozu genau ist das zweite Rechteck da?

    LG Orbit
     

  2. #2
    andy72 andy72 ist offline Mitglied Platin
    Registriert seit
    Oct 2006
    Ort
    München
    Beiträge
    655
    Moin,

    drawText(...) ist scho richtig - das boundingRect beschreibt den Platz, den Dein Text einnimmt, das erste QRect die Fläche auf der er "gezeichnet" werden soll.

    das boundingRect bekommst Du folgend heraus:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    void DEIN_QWIDGET_CLASSNAME::paintEvent(QPaintEvent *event) {
      Q_UNUSED(event); // event wird hier ignoriert
      QPainter painter(this); // initialisiere QPainter Object
      QString txt = "DEIN TEXT";
      QFontMetrics metrics = fontMetrics(); // geht NUR in einem QWidget!
      QRect boundingRect = metrics.boundingRect(txt); // ermittle Fläche des Textes
      int flags = Qt::AlignCenter; // zentriere Text
      painter.drawText(contentsRect(), flags, txt, &boundingRect); // zeichne Text
      painter.end(); // Vorgang abschließen
    }

    Weitere Doku hier: http://doc.trolltech.com/4.5/qpainter.html#drawText-11

    LG
    Andy
    Geändert von andy72 (12.10.09 um 07:40 Uhr)
     

  3. #3
    Avatar von Orbit
    Orbit Orbit ist offline Mitglied Gold
    Registriert seit
    Aug 2007
    Beiträge
    175
    Hallo,

    muss ich dann die Font per pixelGröße verändern? also sagen wir es soll ein "E" von 3,4 zu 8, 9 gezeichnet werden. Dann lasse ich mir bei beliebiger Schriftgröße das boundingRect von "E" geben und skaliere dann die pixelGröße der Schrift sodass es passt oder wie?

    LG;
    Orbit
     

  4. #4
    andy72 andy72 ist offline Mitglied Platin
    Registriert seit
    Oct 2006
    Ort
    München
    Beiträge
    655
    Das kannst Halten wie Du willst,

    die Font-Size bekommst Du ja mit
    Code :
    1
    2
    
    QFont fnt = font();
    int size = fnt.pixelSize();

    im Object heraus - dort kannst Du nötigenfalls mit
    Code :
    1
    2
    3
    4
    5
    6
    
    QFont fnt = font();
    int size = fnt.pixelSize();
    if( size > 12 ) {
      fnt.setPixelSize(12);
      object.setFont(fnt);
    }

    die Schriftgröße ändern - also die Schriftgröße Deinem Widget anpassen
    so daß alles in Dein Rect passt

    LG
     

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 08.04.10, 00:52
  2. Rechteck Zeichnen
    Von patrick1982l im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 08.03.10, 15:44
  3. QT-QPainter und QWidget
    Von Monchichu im Forum C/C++
    Antworten: 5
    Letzter Beitrag: 04.05.09, 00:05
  4. Rechteck über JPanel zeichnen flackert
    Von Ryu20 im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 5
    Letzter Beitrag: 10.04.08, 17:31
  5. [VBA] Wert aus Excel > Rechteck in PPT zeichnen
    Von cocoon im Forum Visual Basic 6.0
    Antworten: 0
    Letzter Beitrag: 06.07.07, 16:59