Рисунки в документе ТРВ-Редактора (TRichView)

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

Рисунки в документе ТРВ-Редактора (TRichView)

Рисунки

Элемент-рисунок показывает изображение, хранимое в объекте типа TRVGraphic.

Delphi VCL предоставляет следующие графические классы:

TBitmap (содержит изображение bitmap (*.bmp), возможно с прозрачностью);

TMetafile (содержит 32-битный (*.emf) или 16-битный (*.wmf) метафайл);

TIcon (содержит значок);

TJpegImage (содержит изображение Jpeg (*.jpg));

TGifImage (D2007+, содержит изображение Gif (*.gif));

TPngImage (D2009+, содержит изображение Png (*.png));

TWicImage (D2010+, используется по умолчанию для изображений Tiff (*.tif), но может содержать другие графические форматы).

TSkGraphic (Skia4Delphi, содержит WebP и WBMP)

TSkSvgGraphic (Skia4Delphi, содержит SVG; включите модуль RVSkia в проект)

Кроме того, можно использовать графические классы других разработчиков.

В Delphi FireMonkey используются следующие классы:

TRVRasterGraphicFM (также доступный как TRVBitmap) (класс-оболочка для TBitmap, содержит растровое изображение; список поддерживаемых форматов зависит от платформы)

TRVSvgImageSkiaFM (Skia4Delphi) (класс-оболочка для TSkSvgBrush, содержит SVG, включите модуль fmxRVSkiaFM в проект)

Тип (стиль) этого элемента: rvsPicture (-3)

См. также тип элемента интерактивный рисунок (рисунки-гиперссылки).

Методы TCustomRichView

Следующие методы быстрого изменения документа добавляют элемент этого типа в конец документа:

AddPicture

Следующие методы быстрого изменения документа меняют основные свойства заданного элемента:

SetPictureInfo

Следующие методы возвращают основные свойства заданного элемента:

GetPictureInfo

Методы TCustomRichViewEdit

Следующие методы редактирования документа вставляют элемент этого типа в позицию каретки:

InsertPicture

Следующие методы редактирования документа меняют основные свойства элемента:

SetCurrentPictureInfo,

SetPictureInfoEd

Следующие методы возвращают основные свойства элемента в позиции каретки:

GetCurrentPictureInfo

Свойства

Размер

Элементы этого типа имеют следующие целочисленные свойства, относящиеся к размеру:

rvepImageWidth, rvepImageHeight растягивают изображение.

Разметка и внешний вид

Элементы этого типа имеют следующие целочисленные свойства, относящиеся к разметке и внешнему виду:

rvepSpacing отступы (зазор между изображением и рамкой; если задан цвет фона, эта область будет закрашена);

rvepColor цвет фона;

rvepBorderWidth, rvepBorderColor ширина и цвет рамки;

rvepOuterHSpacing, rvepOuterVSpacing горизонтальные и вертикальные поля вокруг рамки.

rvepSmoothScaling включает или выключает высококачественное масштабирование изображения

Использование памяти

По умолчанию компонент TRichView освобождает память под графический объект при уничтожении этого элемента, или при назначении нового графического объекта элементу.

Однако, если целочисленное свойство rvepShared не равно нулю, TRichView не освобождает память под графический объект. Такие изображения считаются «общими».

Редко используемые изображения могут быть «деактивированы», т.е. сохранены в потоке в памяти и уничтожены (см. RichViewMaxPictureCount). «Общие» изображения никогда не деактивируются.

Вертикальная позиция

Элементы этого типа имеют следующие свойства, относящиеся к вертикальной позиции:

VAlign;

целочисленные свойства: rvepVShift, rvepVShiftAbs.

Растяжение

В редакторе изображения можно изменять в размере с помощью мыши (кроме TIcon). Вы можете запретить изменение размера с помощью мыши, добавив rvoNoImageResize в EditorOptions. Вы можете запретить изменение размера для конкретного изображения, присвоив 0 целочисленному свойству rvepResizable.

Изменение размера с помощью мыши не изменяет само изображение, оно изменяет rvepImageWidth и rvepImageHeight.

Событие OnItemResize происходит после изменения размера.

Другие свойства

Элементы этого типа имеют следующие целочисленные свойства:

rvepTransparent, rvepTransparentMode, rvepTransparentColor задают прозрачность для bitmap;

rvepAnimationInterval временной интервал для сеточной анимации;

rvepMinHeightOnPage позволяет печатать изображение на нескольких страницах (не работает для метафайлов);

rvepNoHTMLImageSize если не равно нулю, <IMG width> и <IMG height> не сохраняются в HTML для этого изображения.

Элементы этого типа имеют следующие строковые свойства:

rvespAlt текстовое представление изображения, сохраняется в HTML как атрибут <IMG alt>;

rvespImageFileName это свойство может быть использовано в HTML для задания источника изображения.

Сохранение и загрузка [VCL и LCL]

RichView Format (RVF)

Формат RVF может содержать названия классов, которые были использованы для представления изображений. Для загрузки этих элементов из RVF необходимо зарегистрировать графический класс. ТРВ-Редактор делает это автоматически для стандартных классов графики. Но если вы используете сторонние классы графики, зарегистрируйте их, см. раздел о RVGraphicHandler.

Например:

Delphi: RegisterClass(TMyGifImage);

C++Builder: RegisterClass(__classid(TMyGifImage));

Если название класса не сохранено в RVF или класс не зарегистрирован, ТРВ-Редактор подбирает подходящий графический класс, исходя из содержимого графики. Возможен режим, в котором записанные названия классов игнорируются и всегда используется подбор классов по содержимому (опция rvfoIgnoreGraphicClasses в свойстве RVFOptions).

Если опция rvfoSavePicturesBody исключена из RVFOptions, графические данные не сохраняются в RVF. При загрузке файлов RVF происходит событие OnRVFPictureNeeded. Вы можете использовать эту опцию для хранения изображений во внешних файлах или базе данных.

Экспорт в HTML

По умолчанию все изображения, кроме изображений имеющих веб-формат, сохраняются в формате JPEG.

ТРВ-Редактор считает, что изображение имеет веб-формат, если он распознаёт его как JPEG, PNG, GIF, SVG, или WebP.

Если вы хотите сохранить изображения какого-либо графического класса без преобразования (то есть указать, что оно имеет веб-формат), вызовите RVGraphicHandler.RegisterHTMLGraphicFormat.

Например:

Delphi: RVGraphicHandler.RegisterHTMLGraphicFormat(TMyGifImage);

C++Builder: RVGraphicHandler.RegisterHTMLGraphicFormat(__classid(TMyGifImage));

Стандартные форматы PNG и GIF могут быть автоматически зарегистрированы ТРВ-Редактором; см. раздел о RVGraphicHandler.

Если нужно сохранять изображения в других форматах, используйте событие OnHTMLSaveImage или OnSaveImage2.

Экспорт в RTF

RTFOptions содержит опции для сохранения изображений в формате RTF. Изображения встраиваются в RTF, внешние файлы изображений не создаются.

Изображения bitmap сохраняются как bitmap или PNG.

32-битные метафайлы (EMF) сохраняются как 32-битные или 16-битные (WMF) метафайлы.

Изображения PNG и JPEG могут сохраняться без преобразования формата.

Все остальные графические форматы сохраняются как bitmap, WMF или PNG.

Экспорт в DocX

Изображения всех форматов сохраняются без преобразования, за исключением:

изображений bitmap (они сохраняются как PNG, если графический класс PNG задан, см. RVGraphicHandler.RegisterPngGraphic;

значков (они сохраняются как PNG в Delphi 2009+ с использованием класса TPngImage)

Импорт RTF и DocX

Если установить RTFReadProperties.IgnorePictures в True, то изображения из RTF/DocX не будут загружаться в ТРВ-Редактор.

В RTF/DocX могут содержаться как встроенные, так и внешние изображения (в отдельных файлах). Для загрузки внешних изображений необходимо связать расширение файла с соответствующим графическим классом.

Delphi делает это автоматически для стандартных графических классов, но для некоторых сторонних классов это нужно делать самостоятельно.

Например:

TPicture.RegisterFileFormat('gif','Gif Image',TMyGifImage);

См. информацию в разделе о нестандартных графических классах.

См. также...

Работа в 256-цветном графическом режиме;

Анимация;

Качественное масштабирование изображений.