Delphi - Zeichne mehrzeiligen Text in der Mitte eines Rechtecks

7

In Delphi möchte ich Text in ein TRect zeichnen. Ich hoffe auf folgende Funktionalität:

  1. Zeichne den Text vertikal zentriert innerhalb des TRect
  2. Zeichnen Sie den Text horizontal innerhalb des TRect
  3. Wenn mehr als eine Textzeile Platz bietet (mit der Höhe von TRect), zeichnen Sie den Text multiline
  4. Wenn der Text nicht in das TRect-Objekt passt (entweder in eine einzelne oder mehrere Zeilen), fügen Sie Ellipsen an den Text an.

Ich kann sehen, dass die Windows.DrawText () -Funktion fast diese Funktionalität abdeckt, aber beim Schreiben von Text schließen sich mehrzeilig und vertikal zentriert gegenseitig aus.

Ich habe mich gefragt, ob diese Funktionalität in Windows (2000+) eingebaut ist? Wenn nicht, gibt es eine Möglichkeit, dies zu tun, ohne meine eigene Funktion zu schreiben?

    
Simon 10.08.2011, 07:30
quelle

2 Antworten

16

Entschuldigung, dies ist eine Kombination aller vorherigen Antworten und Kommentare. Aber es scheint, OP braucht mehr Hilfe.

%Vor%     
NGLN 10.08.2011, 11:41
quelle
5

Messen Sie den Text zuerst mit DT_CALCRECT . Übergeben Sie DT_WORDBREAK , um anzugeben, dass der Zeilenumbruch aktiviert ist. Dadurch können Sie die erforderliche Höhe für Ihren Text finden. Dann können Sie in Ihrem Code den vertikalen Versatz berechnen, der Ihnen vertikal zentrierten Text bietet, und auf diesen Versatz zeichnen.

    
David Heffernan 10.08.2011 07:35
quelle

Tags und Links