Hantera bläckobjekt i C++
Introduktion
PowerPoint tillhandahåller en bläckfunktion som låter dig rita fria streck. Bläck kan användas för att framhäva andra objekt, visa kopplingar och processer samt rikta uppmärksamheten mot specifika objekt på en bild.
Namnområdet Aspose.Slides.Ink innehåller de klasser och gränssnitt som behövs för att arbeta med bläckobjekt. Till exempel representerar gränssnittet IInk ett bläckobjekt på en bild.
Skillnader mellan vanliga objekt och bläckobjekt
Objekt på en PowerPoint‑bild representeras vanligtvis av formobjekt. I sin enklaste form är en form en behållare som definierar objektets område (dess ram) tillsammans med egenskaper som behållarens storlek, form och bakgrund. För mer information, se Shape Layout Format.
När PowerPoint däremot hanterar ett bläckobjekt ignoreras alla egenskaper för objektets ram (behållare) förutom dess storlek. Storleken på behållarområdet bestäms av de standardmetoder IShape::get_Width och IShape::get_Height:

Bläckspår
Ett bläckspår är ett grundläggande element som används för att registrera pennans bana när en användare skriver digitalt bläck. Ett spår lagrar en sekvens av sammankopplade punkter.
Den enklaste kodningsformen specificerar X‑ och Y‑koordinaterna för varje samplingspunkt. När alla sammankopplade punkter renderas bildas en bild som denna:

Penselinställningar för ritning
En pensel används för att rita linjer som förbinder punkterna i ett bläckspår. Penseln har sin egen färg och storlek, som representeras av metoderna IInkBrush::get_Color och IInkBrush::get_Size.
Ställ in bläckpenselns färg
Denna C++‑kod visar hur du anger färgen på en bläckpensel:
#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();
Ställ in bläckpenselns storlek
Denna C++‑kod visar hur du anger storleken på en bläckpensel:
#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();
Generellt matchar en pensels bredd och höjd inte, så PowerPoint visar inte penselns storlek (den motsvarande datasektionen är gråtonad). När penselns bredd och höjd matchar visar PowerPoint storleken så här:

För tydlighetens skull ökar vi höjden på bläckobjektet och granskar de viktiga dimensionerna:

Behållaren (ramen) tar inte hänsyn till penselns storlek – den antar alltid att linjetjockleken är noll (se föregående bild).
För att bestämma det synliga området för hela bläckobjektet måste penselns storlek för dess spår tas med i beräkningen. Här har målobjektet (det handskrivna textspåret) skalats till storleken på behållaren (ramen). När behållarens storlek ändras förblir penselns storlek konstant, och vice versa.

PowerPoint har liknande beteende för textobjekt:

Kontrollera bläckens utseende under export och rendering
Aspose.Slides tillhandahåller gränssnittet IInkOptions för att styra hur bläckobjekt visas i exporterade eller renderade resultat. Du kan använda dess metoder för att helt dölja bläck eller ändra hur maskoperationer för bläckpenslar tolkas.
Bläckalternativ finns tillgängliga via export‑ eller renderingsalternativen för flera utmatningstyper:
| Utdata | Metod för bläckalternativ |
|---|---|
| PdfOptions::get_InkOptions | |
| HTML | HtmlOptions::get_InkOptions |
| SVG | SVGOptions::get_InkOptions |
| TIFF | TiffOptions::get_InkOptions |
| Bild av bild | RenderingOptions::get_InkOptions |
Samma två inställningar är tillgängliga via dessa metoder:
- IInkOptions::set_HideInk bestämmer om bläckobjekt ska inkluderas i resultatet. Standardvärdet är
false. - IInkOptions::set_InterpretMaskOpAsOpacity bestämmer om en maskoperation tolkas som opacitet vid rendering av en bläckpensel. Standardvärdet är
true; sätt det tillfalseför att använda ROP‑operationen istället.
Dölj bläckobjekt i PDF-utdata
Som standard förblir bläckobjekt synliga under export. Anropa IInkOptions::set_HideInk med true när du behöver ett rent resultat utan handskrivna kommentarer eller annat bläckinnehåll.
Följande C++‑exempel exporterar en presentation till PDF samtidigt som alla bläckobjekt döljs:
#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();
Dölj bläckobjekt när en bild renderas som en bild
För att dölja bläckobjekt när bilder renderas som bitmap‑bilder konfigurerar du RenderingOptions::get_InkOptions och skickar renderingsalternativen till metoden ISlide::GetImage.
Följande C++‑exempel renderar den första bilden som en PNG‑fil utan bläckobjekt:
#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();
Kontrollera rendering av bläckmask
Metoden IInkOptions::set_InterpretMaskOpAsOpacity styr hur maskoperationer tolkas när bläckpenslar renderas. Standardvärdet är true, vilket använder opacitet. Anropa metoden med false för att använda ROP‑operationen istället.
Följande C++‑exempel exporterar en bild till SVG och använder ROP‑baserad rendering för bläckmaskoperationer:
#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();
Samma inställning kan tillämpas via TiffOptions::get_InkOptions när en presentation exporteras eller en bild renderas till TIFF.
Välj om bläck ska döljas eller bevaras
Använd IInkOptions::set_HideInk med true när den exporterade filen ska vara en ren version av en annoterad presentation, till exempel en slutgiltig kopia avsedd för distribution utan granskningsmarkeringar.
Låt bläck vara synligt (standardvärdet false) när bläckanteckningar är en del av det avsedda innehållet, såsom granskningskommentarer, handskrivna anteckningar, markeringar eller teckningar som ska förbli synliga i det exporterade resultatet. Detta möjliggör att applikationer kan generera separata gransknings‑ och slutversioner från samma presentation utan att ändra källbläckobjekten.
Vanliga frågor
Kan jag ändra färg eller storlek på ett befintligt bläckstreck?
Ja. Hämta spåret från IInk::get_Traces, ändra sedan dess IInkTrace::get_Brush. Du kan anropa IInkBrush::set_Color och IInkBrush::set_Size på penseln.
Påverkar dölja av bläck källpresentationen?
Nej. IInkOptions::set_HideInk påverkar endast det renderade eller exporterade resultatet; den tar inte bort eller modifierar bläckobjekt i källpresentationen.
Vilka exportformat stödjer bläckalternativ?
Du kan konfigurera bläckalternativ för PDF, HTML, SVG, TIFF och bitmap‑bilder av bilder via de motsvarande export‑ eller renderingsalternativen som visas ovan.
Vidare läsning
- För allmän information om former, se avsnittet PowerPoint Shapes.
- För information om effektiva värden, se Shape Effective Properties.
- För detaljer om PDF‑export, se Convert PPT and PPTX to PDF.
- För detaljer om HTML‑export, se Convert PowerPoint Presentations to HTML.
- För detaljer om SVG‑export, se Render Presentation Slides as SVG Images.
- För detaljer om TIFF‑export, se Convert PowerPoint Presentations to TIFF.
- För detaljer om rendering av bild till bild, se Convert Presentation Slides to Images.