PowerPoint prezentáció tinta objektumok kezelése C++-ban
Bevezetés
A PowerPoint egy tinta funkciót kínál, amely lehetővé teszi szabadkézi vonalak rajzolását. A tintát fel lehet használni más objektumok kiemelésére, kapcsolatok és folyamatok megjelenítésére, valamint a dián lévő konkrét elemek figyelem felkeltésére.
Az Aspose.Slides.Ink névtér tartalmazza a tintával kapcsolatos objektumok kezeléséhez szükséges osztályokat és interfészeket. Például az IInk interfész egy tintobjektumot képvisel egy dián.
Különbségek a szokásos objektumok és a tinta objektumok között
A PowerPoint dián lévő objektumok általában alakzatobjektumokként vannak ábrázolva. Egyszerű formájában egy alakzat egy tároló, amely meghatározza az objektum tényleges területét (a keretét), valamint olyan tulajdonságokat, mint a tároló mérete, alakja és háttere. További információkért lásd a Shape Layout Format szakaszt.
Azonban amikor a PowerPoint tintobjektummal dolgozik, figyelmen kívül hagyja a keret (konténer) minden tulajdonságát, kivéve a méretét. A konténer területének méretét a szabványos IShape::get_Width és IShape::get_Height metódusok határozzák meg:

Tinta nyomok
A tinta nyom egy alapvető elem, amelyet a toll mozgásának rögzítésére használnak digitális tinta írásakor. Egy nyom egy összekapcsolt pontok sorozatát tárolja.
A legegyszerűbb kódolási forma megadja minden mintapont X és Y koordinátáit. Ha az összes összekapcsolt pontot megjelenítik, egy ilyen képet kapnak:

Ecset tulajdonságok a rajzoláshoz
Az ecsetet a tinta nyom pontjait összekötő vonalak rajzolására használják. Az ecsetnek saját színe és mérete van, amelyet az IInkBrush::get_Color és az IInkBrush::get_Size metódusok képviselnek.
Állítsa be a tinta ecset színét
Ez a C++ kód mutatja, hogyan állítható be egy tinta ecset színe:
#include <DOM/Ink/IInk.h>
#include <DOM/Ink/IInkBrush.h>
#include <DOM/Ink/IInkTrace.h>
#include <DOM/Presentation.h>
#include <drawing/color.h>
#include <system/smart_ptr.h>
using Aspose::Slides::Ink::IInk;
using Aspose::Slides::Presentation;
using System::ExplicitCast;
using System::MakeObject;
auto presentation = MakeObject<Presentation>(u"pres.pptx");
auto ink = ExplicitCast<IInk>(presentation->get_Slide(0)->get_Shape(0));
auto inkTrace = ink->get_Traces()[0];
auto brush = inkTrace->get_Brush();
brush->set_Color(System::Drawing::Color::get_Red());
presentation->Dispose();
Állítsa be a tinta ecset méretét
Ez a C++ kód mutatja, hogyan állítható be egy tinta ecset mérete:
#include <DOM/Ink/IInk.h>
#include <DOM/Ink/IInkBrush.h>
#include <DOM/Ink/IInkTrace.h>
#include <DOM/Presentation.h>
#include <drawing/size_f.h>
#include <system/smart_ptr.h>
using Aspose::Slides::Ink::IInk;
using Aspose::Slides::Presentation;
using System::ExplicitCast;
using System::MakeObject;
auto presentation = MakeObject<Presentation>(u"pres.pptx");
auto ink = ExplicitCast<IInk>(presentation->get_Slide(0)->get_Shape(0));
auto inkTrace = ink->get_Traces()[0];
auto brush = inkTrace->get_Brush();
brush->set_Size(System::Drawing::SizeF(5.0f, 10.0f));
presentation->Dispose();
Általában az ecset szélessége és magassága nem egyezik, ezért a PowerPoint nem jeleníti meg az ecset méretét (a megfelelő adatmező szürkén jelenik meg). Amikor az ecset szélessége és magassága egyezik, a PowerPoint a következő módon mutatja a méretet:

Áttekintésképpen növeljük a tinta objektum magasságát, és tekintsük át a fontos méreteket:

A tároló (keret) nem veszi figyelembe az ecsetek méretét – mindig úgy gondolja, hogy a vonalvastagság nulla (lásd a fenti képet).
Ezért a teljes tinta objektum látható területének meghatározásához a nyomok ecsetméretét is figyelembe kell venni. Itt a céltárgy (a kézírásos szövegnym) a tároló (keret) méretéhez lett méretezve. Amikor a tároló mérete változik, az ecsetméret állandó marad, és fordítva.

A PowerPoint hasonló viselkedést alkalmaz szövegobjektumoknál:

A tinta megjelenésének vezérlése exportálás és renderelés során
Az Aspose.Slides a IInkOptions interfészt biztosítja a tinta objektumok megjelenésének szabályozásához exportált vagy renderelt kimenetben. A metódusait használhatja a tinta teljes elrejtésére vagy a tinta ecset maszk műveletek értelmezésének módosítására.
A tinta opciók több kimenettípus export vagy renderelési beállításain keresztül érhetők el:
| Kimenet | Tintával kapcsolatos opciók metódusa |
|---|---|
| PdfOptions::get_InkOptions | |
| HTML | HtmlOptions::get_InkOptions |
| SVG | SVGOptions::get_InkOptions |
| TIFF | TiffOptions::get_InkOptions |
| Diakép | RenderingOptions::get_InkOptions |
Ugyanaz a két beállítás érhető el ezen metódusokkal:
- IInkOptions::set_HideInk meghatározza, hogy a tinta objektumok bele legyenek-e vonva a kimenetbe. Alapértelmezett értéke
false. - IInkOptions::set_InterpretMaskOpAsOpacity azt határozza meg, hogy egy maszk műveletet átlátszatlanságként értelmeznek‑e tinta ecset renderelésekor. Alapértelmezett értéke
true; állítsafalse‑ra ROP művelet használatához.
Tinta objektumok elrejtése PDF kimenetben
Alapértelmezés szerint a tinta objektumok láthatóak maradnak exportáláskor. Hívja meg a IInkOptions::set_HideInk metódust true‑val, ha tiszta kimenetre van szüksége kézírásos jegyzetek vagy egyéb tinta tartalom nélkül.
A következő C++ példa egy prezentációt PDF‑be exportál, miközben elrejti az összes tinta objektumot:
#include <DOM/Presentation.h>
#include <Export/IInkOptions.h>
#include <Export/PdfOptions.h>
#include <Export/SaveFormat.h>
#include <system/smart_ptr.h>
using Aspose::Slides::Presentation;
using Aspose::Slides::Export::PdfOptions;
using Aspose::Slides::Export::SaveFormat;
using System::MakeObject;
auto presentation = MakeObject<Presentation>(u"presentation.pptx");
auto pdfOptions = MakeObject<PdfOptions>();
pdfOptions->get_InkOptions()->set_HideInk(true);
presentation->Save(u"presentation_without_ink.pdf", SaveFormat::Pdf, pdfOptions);
presentation->Dispose();
Tinta objektumok elrejtése diák képként való renderelésekor
A tinta objektumok elrejtéséhez diák bitmap képként történő renderelésekor konfigurálja a RenderingOptions::get_InkOptions beállítást, és adja át a renderelési opciókat az ISlide::GetImage metódusnak.
A következő C++ példa az első diát PNG képként rendereli tinta objektumok nélkül:
#include <DOM/ISlide.h>
#include <DOM/Presentation.h>
#include <Export/IInkOptions.h>
#include <Export/RenderingOptions.h>
#include <IImage.h>
#include <ImageFormat.h>
#include <system/smart_ptr.h>
using Aspose::Slides::ImageFormat;
using Aspose::Slides::Presentation;
using Aspose::Slides::Export::RenderingOptions;
using System::MakeObject;
auto presentation = MakeObject<Presentation>(u"presentation.pptx");
auto renderingOptions = MakeObject<RenderingOptions>();
renderingOptions->get_InkOptions()->set_HideInk(true);
auto image = presentation->get_Slide(0)->GetImage(renderingOptions);
image->Save(u"slide_without_ink.png", ImageFormat::Png);
image->Dispose();
presentation->Dispose();
Tintamaska renderelésének vezérlése
Az IInkOptions::set_InterpretMaskOpAsOpacity metódus szabályozza, hogyan értelmeződnek a maszk műveletek tinta ecsetek renderelésekor. Alapértelmezett értéke true, ami átlátszatlanságot használ. Hívja meg a metódust false‑val ROP művelet használatához.
A következő C++ példa egy diát SVG‑be exportál, és ROP‑alapú renderelést alkalmaz a tinta maszk műveleteknél:
#include <DOM/ISlide.h>
#include <DOM/Presentation.h>
#include <Export/IInkOptions.h>
#include <Export/SVGOptions.h>
#include <system/io/file.h>
#include <system/smart_ptr.h>
using Aspose::Slides::Presentation;
using Aspose::Slides::Export::SVGOptions;
using System::MakeObject;
using System::IO::File;
auto presentation = MakeObject<Presentation>(u"presentation.pptx");
auto svgOptions = MakeObject<SVGOptions>();
svgOptions->get_InkOptions()->set_InterpretMaskOpAsOpacity(false);
auto stream = File::Create(u"slide.svg");
presentation->get_Slide(0)->WriteAsSvg(stream, svgOptions);
stream->Dispose();
presentation->Dispose();
Ugyanaz a beállítás alkalmazható a TiffOptions::get_InkOptions használatával prezentáció exportálásakor vagy diák TIFF‑re renderelésekor.
Válasszon a tinták elrejtése vagy megtartása között
Használja a IInkOptions::set_HideInk metódust true‑val, ha az exportált fájlnak tiszta változatnak kell lennie a megjegyzésekkel ellátott prezentációból, például egy végleges, terjesztésre szánt másolat esetében, amelyben nincsenek felülvizsgálati jelek.
Hagyja a tintát láthatóan (false alapértelmezett beállítás), ha a tinta megjegyzések a szándékolt tartalom részei, például felülvizsgálati megjegyzések, kézírásos jegyzetek, kiemelések vagy rajzok, amelyeknek a kimenetben is láthatónak kell lenniük. Ez lehetővé teszi, hogy ugyanabból a prezentációból külön felülvizsgálati és végleges kimeneteket generáljon anélkül, hogy módosítaná a forrás tinta objektumokat.
Gyakran ismételt kérdések
Megváltoztathatom egy meglévő tinta vonal színét vagy méretét?
Igen. Szerezze be a nyomot az IInk::get_Traces metódussal, majd módosítsa az IInkTrace::get_Brush értékét. Hívhatja az IInkBrush::set_Color és az IInkBrush::set_Size metódusokat az ecseten.
A tinta elrejtése megváltoztatja a forrás prezentációt?
Nem. Az IInkOptions::set_HideInk csak a renderelt vagy exportált eredményt befolyásolja; nem távolítja el vagy módosítja a tinta objektumokat a forrás prezentációban.
Mely export formátumok támogatják a tinta opciókat?
PDF, HTML, SVG, TIFF és bitmap diaképek esetén konfigurálhatja a tinta opciókat a fenti megfelelő export vagy renderelési beállításokon keresztül.
További olvasnivaló
- A formákról általánosságban a PowerPoint Shapes szakaszban.
- A hatékony értékekről a Shape Effective Properties oldalon.
- A PDF export részleteiért lásd a Convert PPT and PPTX to PDF leírást.
- A HTML export részleteiért lásd a Convert PowerPoint Presentations to HTML leírást.
- Az SVG export részleteiért lásd a Render Presentation Slides as SVG Images leírást.
- A TIFF export részleteiért lásd a Convert PowerPoint Presentations to TIFF leírást.
- A diák képbe renderelés részleteiért lásd a Convert Presentation Slides to Images leírást.