|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#16
|
||||
|
||||
Понятно, вот ошибка:
Код:
aRect := Rect(40, 40, 50, 50); Код:
aRect := Rect(40, 40, 550, 250); Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#17
|
|||
|
|||
Если заведомо больше, то подгоняется только по горизонтали, по высоте он остается таким же гигантским. Может, с флагами поиграть? Попробую справку почитать...
|
#18
|
|||
|
|||
Адекватней всего задачу решают методы Canvas.TextExtent и Canvas.TextRect. А шрифт тогда выбирать перебором.
|
#19
|
||||
|
||||
Тут несколько в другом дело, в VCL для ваших целей действительно лучше использовать внутренние процедуры Canvas-а.
Хотя, можно изменить код таким образом: Код:
procedure TForm1.Button1Click(Sender: TObject); var aRect : TRect; St : String; begin St := 'Строка'; Canvas.Font.Name := 'Comic Sans MS'; Canvas.Font.Color := clRed; canvas.Brush.Color := clGreen; Canvas.Font.Size := 72; SetRect(aRect, 40, 40, 40 + Canvas.TextWidth(St), 40 + Canvas.TextHeight(St)); Canvas.Rectangle(aRect); DrawText(Canvas.Handle, PChar(St), -1, aRect, DT_CENTER or DT_VCENTER or DT_SINGLELINE); Canvas.Font.Size := 14; SetRect(aRect, 40, 200, 40 + Canvas.TextWidth(St), 200 + Canvas.TextHeight(St)); Canvas.Rectangle(aRect); DrawText(Canvas.Handle, PChar(St), -1, aRect, DT_CENTER or DT_VCENTER or DT_SINGLELINE); end; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. Последний раз редактировалось angvelem, 26.02.2012 в 22:23. |
#20
|
|||
|
|||
Да можно, но по факту, разницы никакой. В принципе, я добился того, чего хотел. Спасибо за помощь.
|