TFontInfo.Draw

<< Нажмите, чтобы показать Содержание >>

TFontInfo.Draw

Рисует строку s на канве Canvas.

procedure Draw(const s: TRVUnicodeString; Canvas: TCanvas;

  ThisStyleNo: Integer; SpaceAtLeft, Left, Top, Width, Height
  {$IFDEF RVUSEBASELINE}

   ,BaseLine

  {$ELSE}

    {$IFDEF RVHIGHFONTS}

     ,DrawOffsY

    {$ENDIF}

  {$ENDIF}TRVCoord;
  TextWidth: TRVCoord; SpaceCount: Integer;
  RVStyle: TRVStyle;
  DrawState: TRVTextDrawStates;
  Printing, PreviewCorrection, ForMetafile: Boolean;
  ColorMode: TRVColorMode; DarkMode: Boolean;

  DefBiDiMode: TRVBiDiMode;
  RefCanvas: TCanvas; GraphicInterface: TRVGraphicInterface;
  LeftNoExpIndex, RightNoExpIndex: Integer;

  PSaD: PRVScreenAndDevice; AControl: TControl = nil);

Обычно эта процедура вызывается из события TRVStyle.OnDrawStyleTex. Достаточно передать этому методу все параметры данного события. Параметры, которых нет в OnDrawStyleText, отмечены знаком *.

Метод предполагает, что на Canvas уже применены правильные настройки – шрифт, цвета, межсимвольный интервал и т. д.

Параметры:

s – строка для рисования.

Canvas – канва для рисования.

ThisStyleNo – должен быть равен номеру этого текстового стиля в RVStyle.TextStyles.

SpaceAtLeft – расстояние от Left до начала текста. Должно быть равно 0, если только в RV_Defs.inc не определён RVOLDJUSTIFY.

Left, Top, Width, Height – прямоугольник, в котором должен быть нарисован текст.

BaseLine – координата Y базовой линии текста. Этот параметр существует только в том случае, если в RV_Defs.inc определён RVUSEBASELINE; при этом выравнивание текста на Canvas должно включать TA_BASELINE.

DrawOffsY – этот параметр существует только в том случае, если определён RVHIGHFONTS, а RVUSEBASELINE не определён в RV_Defs.inc. В этом случае верх текста рисуется в позиции Top + DrawOffsY.

TextWidth – ширина строки s. Этот параметр используется только если SpaceCount <> 0. Если PreviewCorrection = True, параметр игнорируется – ширина текста пересчитывается перед рисованием.

SpaceCount:

если равно 0, текст рисуется как есть, если только PreviewCorrection не равно True;

если значение положительное, оно должно быть равно количеству пробелов в s; в этом случае величина Width - SpaceAtLeft - TextWidth распределяется между пробелами;

если равно -100, величина Width - SpaceAtLeft - TextWidth распределяется между всеми символами в s, которые допускают растяжение.

RVStyle* – компонент TRVStyle, содержащий этот текстовый стиль.

PrintingTrue, если текст рисуется при печати или предварительном просмотре.

PreviewCorrectionTrue, если текст рисуется при предварительном просмотре и TRVPrint.PreviewCorrection = True. В этом случае строка s подгоняется по ширине Width - SpaceLeft путём изменения межсимвольного интервала. Этот параметр игнорируется, если Canvas <> RefCanvas.

ForMetafileTrue, если рисование должно быть совместимо с метафайлами.

ColorMode позволяет печатать текст в чёрно-белом режиме, хотя цвета уже должны быть назначены Canvas.

DarkMode – если True, яркость цветов инвертируется.

DefBiDiMode – режим двунаправленного текста абзаца, содержащего этот текст.

RefCanvas – канва, используемая для измерения текста:

при рисовании в TRichView, TRichViewEdit, TRVReportHelper, TRVPrint должна быть равна Canvas;

при рисовании в TSRichViewEdit (из СРВ-Редактора (ScaleRichView)) должна быть равна канве, возвращаемой SRichViewEdit.RichViewEdit.RVData.GetScaleRichViewInterface.GetFormatCanvas.

GraphicInterface* – RVStyle.GraphicInterface.

LeftNoExpIndex, RightNoExpIndex используются, если SpaceCount = -100. Если их значения неотрицательны, они задают номера символов в s (начиная с 0), которые не должны растягиваться.

PSaD – указатель на запись, используемую для преобразования между значениями TRVStyleLength и пикселями устройства. При рисовании на экране может быть равен nil. Этот параметр необходим для правильного применения CharSpacing.

AControl – редактор, в котором рисуется этот текст. Этот параметр необязателен. Он необходим только в VCL для Delphi 10.4 и новее, если ColorMode = rvcmVCLThemeColor и у редактора задано свойство StyleName. Параметр позволяет выбрать тему VCL, назначенную именно этому редактору, вместо глобальной темы VCL.