DrawText - DtWordBreak - pozyskiwanie stringa po operacji lub WrapText

0

Witam.

Mam mały problem z funkcją DrawText. Używam jej, by malować na canvasie tekst z funkcją zawijania (z flagą DtWordBreak) lecz to mi nie wystarczy. Jak zrobić by ta funkcja (może jest jakiś inny sposób) zwróciła mi tekst do Stringa już zawinięty? Po namalowaniu na canvasie chcę zrobić jeszcze kilka operacji na tekście (głównie canvas) , a fajnie by było, gdybym miał do niego dostęp już po zawinięciu w formie Stringa. Może da się wykorzystać jakoś funkcję WrapText, która by się zachowywała TAK SAMO (tzn. w tych samych miejscach umiejscawiałaby znak nowej lini) jak funkcja DrawText.

 
WrapText(const Line, BreakStr: string; nBreakChars: TSysCharSet; MaxCol: Integer):string;

tylko w parametrze MaxCol podaje się bodajże liczbę liter, a nie np. szerokość tekstu tak jak w DrawText po którym dany tekst ma zostać zawinięty. (Tekst zawijam gdy nie mieści się na PaintBoxie, ew. formie)

Bardzo proszę o pomoc.

Pozdrawiam.

0

Funkcja DrawText użyta z parametrem DT_MODIFYSTRING zwraca zmodyfikowany lpString gdy użyto również parametry DT_END_ELLIPSIS albo DT_PATH_ELLIPSIS. Nie sprawdzałem czy to działa także z parametrem DT_WORDBREAK.
W każdym razie jeżeli użyje się flagę DT_CALCRECT to odpowiednio modyfikowany jest lpRect co pozwala dobrać np wymiary canvasa na którym tekst będzie rysowany.

0

Dziękuję za odpowiedź

Tak, to raczej będzie to, chociaż finalnie już zrobiłem zupełnie inaczej (zrezygnowałem z funkcji DrawText oraz WrapText) i spełnia to moje oczekiwania.

Pozdrawiam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1