LineTo(x, y) – рисует отрезок от точки, в которой на данный момент находится конец отрезка, до точки (x, y), а начальная позиция задается с помощью процедуры MoveTo. -Нужна подобная процедура только для работы с текстом в графическом режиме. Что можете посоветовать? TextOut - не подходит весь текст выводится в одну строку. DrawTextCentered - тоже не подходит. Центрует весь текст Программа Pascal ABS.Net
А что мешает самому реализовать? Ну, если хотите, вот:
uses GraphABC;
procedure OutTextRect(Left, Top, Width : Integer; Txt : String);
begin
var Words := Txt.ToWords(' ');
var h := TextHeight(Txt);
var S : String := '';
var nextWord : Boolean;
foreach var Word in Words do //---------- соберём строки из слов ----------
repeat
nextWord := True;
if TextWidth((S + ' ' + Word).Trim) <= Width then // сцепляем слова
S := (S + ' ' + Word).Trim
else if S.Length = 0 then // слово целиком не лезет в ширину
begin //---------- соберём строки из букв ----------
foreach var Letter in Word do
if TextWidth(S + Letter) <= Width then
S += Letter
else
begin
TextOut(Left, Top, S);
Top += h;
S := Letter;
end;
end
else // нужно вывести
begin
TextOut(Left, Top, S);
Top += h;
S := '';
nextWord := False;
end;
until nextWord;
if S.Length > 0 then // если ещё что-то не вывели, нужно это сделать
TextOut(Left, Top, S);
end;
begin
Rectangle(10-1, 20-1, 510+1, 400);
Font.Size := 20;
Font.Color := RGB(0,50,150);
OutTextRect(10, 20, 500, 'Скороговорун скороговорил скоровыговаривал, что ' +
'всех скороговорок не перескороговоришь не перескоровыговариваешь, но, ' +
'заскороговорившись, выскороговорил, что все скороговорки перескороговоришь, ' +
'да не перескоровыговариваешь. 123456789012345678901234567890123456789012345 ' +
'Вот такие вот дела!');
end.
Хотя, в принципе, можно просто так:
uses GraphABC;
begin
TextOut(10,10,'Один'+NewLine+'два'+NewLine+'три.');
DrawTextCentered(20,20,100,200,'Один один один один один один один'+NewLine+'два'+NewLine+'три.');
end.