Gestire gli oggetti Ink della presentazione in C++
Introduzione
PowerPoint fornisce una funzionalità ink che consente di disegnare tratti liberi. L’inchiostro può essere utilizzato per evidenziare altri oggetti, mostrare connessioni e processi e attirare l’attenzione su elementi specifici in una diapositiva.
Lo spazio dei nomi Aspose.Slides.Ink contiene le classi e le interfacce necessarie per lavorare con gli oggetti ink. Ad esempio, l’interfaccia IInk rappresenta un oggetto ink in una diapositiva.
Differenze tra Oggetti Regolari e Oggetti Ink
Gli oggetti in una diapositiva PowerPoint sono tipicamente rappresentati da oggetti forma. Nella sua forma più semplice, una forma è un contenitore che definisce l’area dell’oggetto stesso (il suo riquadro) insieme a proprietà come le dimensioni del contenitore, la forma e lo sfondo. Per ulteriori informazioni, vedere Formato di Layout della Forma.
Tuttavia, quando PowerPoint gestisce un oggetto ink, ignora tutte le proprietà del riquadro dell’oggetto (contenitore) tranne le sue dimensioni. Le dimensioni dell’area del contenitore sono determinate dai metodi standard IShape::get_Width e IShape::get_Height :

Tracce Ink
Una traccia ink è un elemento di base usato per registrare la traiettoria di una penna mentre l’utente scrive inchiostro digitale. Una traccia memorizza una sequenza di punti collegati.
La forma più semplice di codifica specifica le coordinate X e Y di ciascun punto di campionamento. Quando tutti i punti collegati vengono renderizzati, producono un’immagine come questa:

Proprietà del Pennello per il Disegno
Un pennello è usato per disegnare linee che collegano i punti di una traccia ink. Il pennello ha il proprio colore e le proprie dimensioni, rappresentati dai metodi IInkBrush::get_Color e IInkBrush::get_Size .
Impostare il Colore del Pennello Ink
Questo codice C++ mostra come impostare il colore di un pennello ink:
#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();
Impostare le Dimensioni del Pennello Ink
Questo codice C++ mostra come impostare le dimensioni di un pennello ink:
#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();
In generale, la larghezza e l’altezza di un pennello non corrispondono, quindi PowerPoint non visualizza le dimensioni del pennello (la relativa sezione dati è grigia). Quando larghezza e altezza del pennello coincidono, PowerPoint visualizza le sue dimensioni in questo modo:

Per maggiore chiarezza, aumentiamo l’altezza dell’oggetto ink e rivediamo le dimensioni importanti:

Il contenitore (riquadro) non tiene conto delle dimensioni dei pennelli: assume sempre che lo spessore della linea sia zero (vedi l’immagine precedente).
Pertanto, per determinare l’area visibile dell’intero oggetto ink, è necessario considerare le dimensioni del pennello delle sue tracce. Qui l’oggetto di destinazione (la traccia di testo scritto a mano) è stato scalato alle dimensioni del contenitore (riquadro). Quando le dimensioni del contenitore cambiano, le dimensioni del pennello rimangono costanti, e viceversa.

PowerPoint utilizza un comportamento simile per gli oggetti di testo:

Controllare l’Aspetto dell’Ink Durante l’Esportazione e il Rendering
Aspose.Slides fornisce l’interfaccia IInkOptions per controllare come gli oggetti ink appaiono nell’output esportato o renderizzato. È possibile usare i suoi metodi per nascondere completamente l’ink o per modificare il modo in cui le operazioni di maschera del pennello ink vengono interpretate.
Le opzioni ink sono disponibili tramite le opzioni di esportazione o rendering per diversi tipi di output:
| Output | Metodo opzioni Ink |
|---|---|
| PdfOptions::get_InkOptions | |
| HTML | HtmlOptions::get_InkOptions |
| SVG | SVGOptions::get_InkOptions |
| TIFF | TiffOptions::get_InkOptions |
| Immagine della diapositiva | RenderingOptions::get_InkOptions |
Gli stessi due settaggi sono disponibili attraverso questi metodi:
- IInkOptions::set_HideInk determina se gli oggetti ink sono inclusi nell’output. Il valore predefinito è
false. - IInkOptions::set_InterpretMaskOpAsOpacity determina se un’operazione di maschera è interpretata come opacità durante il rendering di un pennello ink. Il valore predefinito è
true; impostarlo afalseper utilizzare l’operazione ROP invece.
Nascondere gli Oggetti Ink nell’Output PDF
Per impostazione predefinita, gli oggetti ink rimangono visibili durante l’esportazione. Chiamare IInkOptions::set_HideInk con true quando è necessario un output pulito senza annotazioni scritte a mano o altri contenuti ink.
Il seguente esempio C++ esporta una presentazione in PDF nascondendo tutti gli oggetti ink:
#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();
Nascondere gli Oggetti Ink Durante il Rendering di una Diapositiva come Immagine
Per nascondere gli oggetti ink quando le diapositive vengono renderizzate come immagini bitmap, configurare RenderingOptions::get_InkOptions e passare le opzioni di rendering al metodo ISlide::GetImage .
Il seguente esempio C++ rende la prima diapositiva come immagine PNG senza oggetti ink:
#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();
Controllare il Rendering della Maschera Ink
Il metodo IInkOptions::set_InterpretMaskOpAsOpacity controlla come le operazioni di maschera sono interpretate durante il rendering dei pennelli ink. Il valore predefinito è true, che utilizza l’opacità. Chiamare il metodo con false per utilizzare l’operazione ROP invece.
Il seguente esempio C++ esporta una diapositiva in SVG e utilizza il rendering basato su ROP per le operazioni di maschera ink:
#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();
Lo stesso settaggio può essere applicato tramite TiffOptions::get_InkOptions durante l’esportazione di una presentazione o il rendering di una diapositiva in TIFF.
Scegliere Se Nascondere o Preservare l’Ink
Usare IInkOptions::set_HideInk con true quando il file esportato deve essere una versione pulita di una presentazione annotata, ad esempio una copia finale destinata alla distribuzione senza segni di revisione.
Mantenere l’ink visibile (impostazione predefinita false) quando le annotazioni ink fanno parte del contenuto previsto, come commenti di revisione, note scritte a mano, evidenziazioni o disegni che devono rimanere visibili nel risultato esportato. Questo consente alle applicazioni di generare uscite di revisione e finali separate dalla stessa presentazione senza modificare gli oggetti ink di origine.
FAQ
Posso cambiare il colore o le dimensioni di un tratto ink esistente?
Sì. Ottieni la traccia da IInk::get_Traces, quindi modifica il suo IInkTrace::get_Brush. Puoi chiamare IInkBrush::set_Color e IInkBrush::set_Size sul pennello.
Nascondere l’ink modifica la presentazione di origine?
No. IInkOptions::set_HideInk influisce solo sul risultato renderizzato o esportato; non rimuove né modifica gli oggetti ink nella presentazione di origine.
Quali formati di esportazione supportano le opzioni ink?
È possibile configurare le opzioni ink per PDF, HTML, SVG, TIFF e immagini bitmap delle diapositive tramite le corrispondenti opzioni di esportazione o rendering mostrate sopra.
Ulteriori letture
- Per informazioni generali sulle forme, vedere la sezione Forme PowerPoint .
- Per maggiori informazioni sui valori effettivi, vedere Proprietà Effettive della Forma .
- Per i dettagli sull’esportazione PDF, vedere Convertire PPT e PPTX in PDF .
- Per i dettagli sull’esportazione HTML, vedere Convertire Presentazioni PowerPoint in HTML .
- Per i dettagli sull’esportazione SVG, vedere Renderizzare Diapositive di Presentazione come Immagini SVG .
- Per i dettagli sull’esportazione TIFF, vedere Convertire Presentazioni PowerPoint in TIFF .
- Per i dettagli sul rendering di diapositive in immagini, vedere Convertire Diapositive di Presentazione in Immagini .