|
<< Нажмите, чтобы показать Содержание >> Как использовать нестандартные графические классы в ТРВ-Редакторе [VCL и LCL] |
Вся приведённая ниже информация относится к VCL и LCL.
В FireMonkey графические классы наследуются от TRVGraphicFM.
Можно использовать графические классы, созданные сторонними разработчиками.
Эти классы можно использовать так же, как стандартные классы (TBitmap, TIcon, TMetafile, TJpegImage).
Изображение можно добавить в документ с помощью AddPictureEx или InsertPicture.
Пример:
gif: TGifImage;
...
gif := TGifImage.Create;
gif.LoadFromFile('demo.gif');
editor.InsertPicture('Demo', gif, rvvaBaseLine);
Например, можно использовать следующие бесплатные графические классы:
▪TGifImage Андерса Меландера (Anders Melander) (www.trichview.ru/resources/thirdparty/gifimage.zip) (полезно для Delphi 2006 и более старых версий)
▪TJvGifImage из JEDI JVCL https://wiki.delphi-jedi.org/ (полезно для Delphi 2006 и более старых версий;)
▪TPngObject Густаво Хуффенбахера Дауда (Gustavo Huffenbacher Daud) www.trichview.ru/resources/thirdparty/pngimage.zip (полезно для Delphi 2007 и более старых версий)
Начиная с Delphi 2007, расширенная версия TGifImage Андерса Меландера входит в VCL, поэтому TGifImage становится стандартным графическим классом.
Начиная с Delphi 2009, TPngImage входит в VCL.
Для поддержки анимации задайте TCustomRichView.AnimationMode = rvaniOnFormat.
В проект должны быть включены следующие модули:
▪RVGifAnimate – для TGifImage Андерса Меландера;
▪RVJvGifAnimate – для TJvGifImage из JEDI JVCL;
▪RVGifAnimate2007 – для стандартного Delphi-класса TGifImage в Delphi 2007 и новее.
Загрузка внешних файлов изображений
Иногда изображения вставляются автоматически, например при импорте изображений, на которые ссылаются RTF-, DocX-, Markdown- или HTML-документы.
Вопрос: какие графические классы ТРВ-Редактор использует для загрузки графических форматов, таких как GIF или PNG?
Ответ: Он использует графический класс, зарегистрированный для данного формата файла.
Сначала ТРВ-Редактор пытается определить формат изображения по содержимому файла и выбрать подходящий графический класс для этого формата.
Если определить формат по содержимому не удалось, используются сопоставления между расширениями файлов и графическими классами.
Если разработчик стороннего класса не связал свой графический класс с расширением файла, это можно сделать самостоятельно с помощью TPicture.RegisterFileFormat:
TPicture.RegisterFileFormat('gif','Gif Image', TGifImage);
Загрузка изображений, встроенных в RTF, DocX или HTML
При импорте изображений, содержащихся внутри RTF или DocX, ТРВ-Редактор использует графические классы, заданные как классы по умолчанию для соответствующих графических форматов. См. TRVGraphicHandler.SetDefaultGraphicClass.
При импорте изображений, содержащихся внутри HTML в кодировке Base64, ТРВ-Редактор определяет графический формат по содержимому.
Если вы используете Delphi 5, вместо прямого вызова конструктора графического класса используйте RVGraphicHandler.CreateGraphic.
Для Delphi 6/C++Builder 6 и более новых версий это не требуется.
По умолчанию все изображения в форматах, не предназначенных для веб, преобразуются в JPEG. Для некоторых форматов это может быть нежелательно.
Можно указать, какие графические классы не должны преобразовываться.
Используйте процедуру RVGraphicHandler.RegisterHTMLGraphicFormat, например:
uses RVGrHandler;
...
// вызовите перед первым экспортом в HTML
RVGraphicHandler.RegisterHTMLGraphicFormat(TMyGifImage);
Эта регистрация влияет только на изображения указанного формата. Изображения остальных форматов будут преобразовываться в JPEG.
ТРВ-Редактор автоматически регистрирует следующие классы как HTML-графические форматы:
▪стандартный TPngImage – для Delphi 2009 и новее;
▪стандартный TGifImage – для Delphi 2007 и новее, если в проект включён модуль RVGifAnimate2007;
▪TGifImage Андерса Меландера – если в проект включён модуль RVGifAnimate;
▪TJvGifImage из JEDI JVCL – если в проект включён модуль RVJvGifAnimate;
▪TPortableNetworkGraphic – для Lazarus.
Задайте графический класс для PNG-изображений с помощью RVGraphicHandler.RegisterPngGraphic, например:
uses RVFuncs;
...
RVGraphicHandler.RegisterPngGraphic(TPngObject).
Это позволяет загружать PNG-изображения из RTF-файлов и сохранять PNG-изображения в RTF- и DocX-файлы без преобразования в изображения bitmap или метафайлы.
В Delphi 2009 и новее ТРВ-Редактор автоматически регистрирует стандартный TPngImage как класс PNG.
Задайте графический класс для JPEG-изображений с помощью RVGraphicHandler.RegisterJpegGraphic, например:
uses RVFuncs;
...
RVGraphicHandler.RegisterJpegGraphic(TMyJpegImage).
Если этот метод не вызывается, ТРВ-Редактор использует TJPEGImage.
Этот класс используется при загрузке JPEG-изображений, встроенных в RTF.
Если раскомментировать RVUSEDXPNGIMAGE в RV_Defs.inc, ТРВ-Редактор поддерживает следующие классы DevExpress:
▪TcxPngImage – для PNG;
▪TdxSmartImage – для Bitmap, JPEG, TIFF, GIF и SVG.
TcxPngImage становится классом PNG по умолчанию для ТРВ-Редактора, но TdxSmartImage не становится классом JPEG по умолчанию, если явно не вызвать RVGraphicHandler.RegisterJpegGraphic.