Inkobjecten in PowerPoint beheren in C++
Inleiding
PowerPoint biedt een inkt‑functie waarmee u vrije tekenstreken kunt maken. Inkt kan worden gebruikt om andere objecten te markeren, verbindingen en processen weer te geven en de aandacht op specifieke items op een dia te vestigen.
De Aspose.Slides.Ink namespace bevat de klassen en interfaces die nodig zijn om met inktobjecten te werken. Bijvoorbeeld, de IInk interface vertegenwoordigt een inktobject op een dia.
Verschillen tussen reguliere objecten en inktobjecten
Objecten op een PowerPoint‑dia worden doorgaans weergegeven door vormobjecten. In de eenvoudigste vorm is een vorm een container die het gebied van het object zelf (het frame) definieert, samen met eigenschappen zoals de grootte van de container, vorm en achtergrond. Zie voor meer informatie Shape Layout Format.
Echter, wanneer PowerPoint een inktobject verwerkt, negeert het alle eigenschappen van het objectframe (container) behalve de grootte. De grootte van het containergebied wordt bepaald door de standaardmethoden IShape::get_Width en IShape::get_Height:

Inktsporen
Een inktspoor is een basiselement dat wordt gebruikt om de traject van een pen vast te leggen terwijl een gebruiker digitale inkt schrijft. Een spoor slaat een reeks verbonden punten op.
De eenvoudigste vorm van codering specificeert de X‑ en Y‑coördinaten van elk monsterpunt. Wanneer alle verbonden punten worden gerenderd, produceren ze een afbeelding zoals deze:

Penseleigenschappen voor tekenen
Een penseel wordt gebruikt om lijnen te tekenen die de punten van een inktspoor met elkaar verbinden. Het penseel heeft zijn eigen kleur en grootte, weergegeven door de methoden IInkBrush::get_Color en IInkBrush::get_Size.
Ink Penseelkleur Instellen
Deze C++‑code toont hoe u de kleur van een inktpenseel instelt:
#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();
Ink Penseelgrootte Instellen
Deze C++‑code toont hoe u de grootte van een inktpenseel instelt:
#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();
Over het algemeen komen de breedte en hoogte van een penseel niet overeen, waardoor PowerPoint de penseelgrootte niet weergeeft (de overeenkomstige gegevenssectie is grijs weergegeven). Wanneer de breedte en hoogte van het penseel wel overeenkomen, toont PowerPoint de grootte op deze manier:

Voor de duidelijkheid verhogen we de hoogte van het inktobject en bekijken we de belangrijke afmetingen:

De container (frame) houdt geen rekening met de grootte van de penselen – hij gaat er altijd vanuit dat de lijndikte nul is (zie de vorige afbeelding).
Daarom moet, om het zichtbare gebied van het volledige inktobject te bepalen, de penseelgrootte van zijn sporen in aanmerking worden genomen. Hier is het doelobject (het handgeschreven tekstspoor) geschaald naar de grootte van de container (frame). Wanneer de grootte van de container verandert, blijft de penseelgrootte constant, en vice versa.

PowerPoint hanteert een vergelijkbaar gedrag voor tekstobjecten:

Inktweergave tijdens export en rendering regelen
Aspose.Slides biedt de interface IInkOptions om te regelen hoe inktobjecten verschijnen in geëxporteerde of gerenderde output. U kunt de methoden gebruiken om inkt volledig te verbergen of om te wijzigen hoe maskerbewerkingen van inktpenselen worden geïnterpreteerd.
Inktopties zijn beschikbaar via de export‑ of renderingopties voor verschillende outputtypes:
| Uitvoer | Ink‑opties methode |
|---|---|
| PdfOptions::get_InkOptions | |
| HTML | HtmlOptions::get_InkOptions |
| SVG | SVGOptions::get_InkOptions |
| TIFF | TiffOptions::get_InkOptions |
| Slide image | RenderingOptions::get_InkOptions |
Via deze methoden zijn dezelfde twee instellingen beschikbaar:
- IInkOptions::set_HideInk bepaalt of inktobjecten worden opgenomen in de output. De standaardwaarde is
false. - IInkOptions::set_InterpretMaskOpAsOpacity bepaalt of een maskerbewerking wordt geïnterpreteerd als opacity bij het renderen van een inktpenseel. De standaardwaarde is
true; stel deze in opfalseom in plaats daarvan de ROP‑bewerking te gebruiken.
Inkobjecten verbergen in PDF‑output
Standaard blijven inktobjecten zichtbaar tijdens export. Roep IInkOptions::set_HideInk aan met true wanneer u een schone output nodig heeft zonder handgeschreven aantekeningen of andere inktinhoud.
Het volgende C++‑voorbeeld exporteert een presentatie naar PDF terwijl alle inktobjecten worden verborgen:
#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();
Inkobjecten verbergen bij het renderen van een dia als afbeelding
Om inktobjecten te verbergen bij het renderen van dia’s als bitmap‑afbeeldingen, configureer RenderingOptions::get_InkOptions en geef de renderingopties door aan de methode ISlide::GetImage.
Het volgende C++‑voorbeeld rendert de eerste dia als een PNG‑afbeelding zonder inktobjecten:
#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();
Inktmasker Rendering regelen
De methode IInkOptions::set_InterpretMaskOpAsOpacity regelt hoe maskerbewerkingen worden geïnterpreteerd bij het renderen van inktpenselen. De standaardwaarde is true, waardoor opacity wordt gebruikt. Roep de methode aan met false om in plaats daarvan de ROP‑bewerking te gebruiken.
Het volgende C++‑voorbeeld exporteert een dia naar SVG en gebruikt ROP‑gebaseerde rendering voor inktmaskerbewerkingen:
#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();
Dezelfde instelling kan worden toegepast via TiffOptions::get_InkOptions bij het exporteren van een presentatie of het renderen van een dia naar TIFF.
Kies of u Ink wilt verbergen of behouden
Gebruik IInkOptions::set_HideInk met true wanneer het geëxporteerde bestand een schone versie van een geannoteerde presentatie moet zijn, bijvoorbeeld een definitieve kopie bedoeld voor distributie zonder reviewmarkeringen.
Laat inkt zichtbaar (de standaardinstelling false) wanneer inktannotaties deel uitmaken van de beoogde inhoud, zoals reviewcommentaren, handgeschreven notities, markeringen of tekeningen die zichtbaar moeten blijven in het geëxporteerde resultaat. Hierdoor kunnen toepassingen aparte review‑ en definitieve outputs genereren vanuit dezelfde presentatie zonder de bron‑inkobjecten te wijzigen.
FAQ
Kan ik de kleur of grootte van een bestaande inktstreep wijzigen?
Ja. Haal het spoor op via IInk::get_Traces, wijzig vervolgens zijn IInkTrace::get_Brush. U kunt IInkBrush::set_Color en IInkBrush::set_Size aanroepen op het penseel.
Verandert het verbergen van inkt de bronpresentatie?
Nee. IInkOptions::set_HideInk heeft alleen invloed op het gerenderde of geëxporteerde resultaat; het verwijdert of wijzigt geen inktobjecten in de bronpresentatie.
Welke exportformaten ondersteunen inktopties?
U kunt inktopties configureren voor PDF, HTML, SVG, TIFF en bitmap‑dia‑afbeeldingen via de overeenkomstige export‑ of renderingopties die hierboven zijn weergegeven.
Verdere lectuur
- Voor algemene informatie over vormen, zie de sectie PowerPoint Shapes.
- Voor meer informatie over effectieve waarden, zie Shape Effective Properties.
- Voor details over PDF‑export, zie Convert PPT and PPTX to PDF.
- Voor details over HTML‑export, zie Convert PowerPoint Presentations to HTML.
- Voor details over SVG‑export, zie Render Presentation Slides as SVG Images.
- Voor details over TIFF‑export, zie Convert PowerPoint Presentations to TIFF.
- Voor details over dia‑naar‑afbeelding rendering, zie Convert Presentation Slides to Images.