Picture.TextWidthAndHeight

From SunFlurry wiki
Revision as of 08:52, 7 February 2021 by Admin (talk | contribs) (1 revision imported)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
  TextWidthAndHeight (Размеры текста)
Объект:Картинка
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Нет
Исключения:Невозможно превратить в число, строку, неверные параметры.
Визуальность:Нет

Функция находит и передает аргументам-переменным ширину и высоту текста в точках (если бы текст был выведен на экран). Свойства текста включают шрифт, его размер, его параметры, цвет текста. Функция может быть вызвана непосредственно из интерфейса. Функция может использоваться вместо двух вызовов TextWidth и TextHeight для ускорения.

Синтаксис

Picture.TextWidthAndHeight(<Текст (STRING)>,<Шрифт текста (STRING)>="Consolas|||0|",<Ширина текста в точках (INT)>,<Высота текста в точках (INT)>)

Аргументы

  • <Текст (STRING)> - Текст, ширину и высоту которого требуется найти. Текст может включить международные символы. Отображение символов сильно зависит от используемого шрифта, некоторые шрифты могут не поддерживать определенные международные символы, это может сказаться на размерах текста.
  • <Шрифт текста (STRING)> (необязательный аргумент) Аргумент задает параметры и наименование шрифта, текста в формате <Название шрифта>[|<Размер>[|<Параметры шрифта>[|<Цвет шрифта>[|<Градус угла поворота шрифта>[|<Режим сглаживания шрифта>]]]]]. По умолчанию, используется следующее значение аргумента: Consolas|8||0|0|1
  • <Ширина текста в точках (INT)>,<Высота текста в точках (INT)> (возможен аргумент-переменная (ByRef)) Переменные, принимающие рассчитанную ширину и высоту текста. Входящее значение переменных в функции не используется.

Примеры

Картинка, сгенерированная примером
//Пример использования угла поворота текста

  Function _RotX(x,y,alpha)  
    Exit x*Cos(radians(alpha))+y*Sin(radians(alpha));
  EndFunction

  Function _RotY(x,y,alpha)
    Exit -x*Sin(radians(alpha))+y*Cos(radians(alpha));
  EndFunction

aPic:=Picture.Create(560,120,toRgb(255,255,255),32);
Стр:="ВРАЩЕНИЕ";
y:=5;
x:=5;
a:=0;
For i:=1 To Length(Стр) Do
  lx:=0;ly:=0;
  Стр1:=Mid(Стр,i,1);
  aPic.TextWidthAndHeight(Стр1,"Tahoma|60|B|",lx,ly);
  //Находим смещение точки центра буквы после поворота относительно текущей точки центра буквы
  lx2:=lx\2;
  ly2:=ly\2;
  dx:=_RotX(lx2,ly2,a)-lx2;
  dy:=_RotY(lx2,ly2,a)-ly2;
  
  aPic.Text(x-dx,y-dy,Стр1,"Tahoma|60|B|"+DecToBase(ToRgb(255*i/Length(Стр),0,0),16)+"|"+a);

  //Не совсем верно, так как после вращения "ширина" буквы стала больше 
  x:=x+lx+5;
  a:=Round(i/Length(Стр)*90);
EndDo;

aPic.Save("c:\Result","png");