Správa ink objektů prezentace v C++
Úvod
PowerPoint poskytuje funkci ink, která umožňuje kreslit volné tahy. Ink lze použít k zvýraznění dalších objektů, zobrazení spojení a procesů a upoutání pozornosti na konkrétní položky na snímku.
Namespace Aspose.Slides.Ink obsahuje třídy a rozhraní potřebná pro práci s objekty ink. Například rozhraní IInk představuje objekt ink na snímku.
Rozdíly mezi běžnými objekty a objekty ink
Objekty na snímku PowerPointu jsou obvykle reprezentovány objekty tvaru. V nejjednodušší formě je tvar kontejner, který definuje oblast samotného objektu (jeho rámec) spolu s vlastnostmi, jako je velikost kontejneru, tvar a pozadí. Další informace naleznete v Shape Layout Format.
Avšak když PowerPoint zpracovává objekt ink, ignoruje všechny vlastnosti rámce objektu (kontejneru) kromě jeho velikosti. Velikost oblasti kontejneru je určena standardními metodami IShape::get_Width a IShape::get_Height metodami:

Stopy Ink
Stopa ink je základní prvek používaný k zaznamenání trajektorie pera, když uživatel píše digitální ink. Stopa ukládá sekvenci propojených bodů.
Nejjednodušší forma kódování určuje souřadnice X a Y každého vzorkovacího bodu. Když jsou všechny propojené body vykresleny, vytvoří obraz jako tento:

Vlastnosti štětce pro kreslení
Štětec se používá k vykreslení čar, které spojují body stopy ink. Štětec má svou vlastní barvu a velikost, reprezentované metodami IInkBrush::get_Color a IInkBrush::get_Size metodami.
Nastavení barvy štětce ink
Tento kód C++ ukazuje, jak nastavit barvu štětce 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();
Nastavení velikosti štětce ink
Tento kód C++ ukazuje, jak nastavit velikost štětce 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();
Obecně šířka a výška štětce nejsou stejné, takže PowerPoint nezobrazuje velikost štětce (odpovídající sekce dat je šedá). Když se šířka a výška štětce shodují, PowerPoint zobrazí jeho velikost takto:

Pro přehlednost zvýšíme výšku objektu ink a přezkoumáme důležité rozměry:

Kontejner (rámec) nebere v úvahu velikost štětců — vždy předpokládá, že tloušťka čáry je nula (viz předchozí obrázek).
Proto pro určení viditelné oblasti celého objektu ink je třeba zohlednit velikost štětce jeho stop. Zde byl cílový objekt (stopa ručně psaného textu) škálován na velikost kontejneru (rámce). Když se velikost kontejneru změní, velikost štětce zůstane konstantní a naopak.

PowerPoint používá podobné chování pro textové objekty:

Řízení vzhledu Ink při exportu a vykreslování
Aspose.Slides poskytuje rozhraní IInkOptions pro kontrolu toho, jak mají být objekty ink zobrazeny v exportovaném nebo vykresleném výstupu. Můžete použít jeho metody k úplnému skrytí ink nebo ke změně způsobu interpretrace operací masky štětce ink.
Možnosti ink jsou k dispozici prostřednictvím možností exportu nebo vykreslování pro několik typů výstupu:
| Výstup | Metoda možností Ink |
|---|---|
| PdfOptions::get_InkOptions | |
| HTML | HtmlOptions::get_InkOptions |
| SVG | SVGOptions::get_InkOptions |
| TIFF | TiffOptions::get_InkOptions |
| Slide image | RenderingOptions::get_InkOptions |
Stejné dvě nastavení jsou k dispozici prostřednictvím těchto metod:
- IInkOptions::set_HideInk určuje, zda jsou objekty ink zahrnuty ve výstupu. Výchozí hodnota je
false. - IInkOptions::set_InterpretMaskOpAsOpacity určuje, zda je operace masky interpretována jako neprůhlednost při vykreslování štětce ink. Výchozí hodnota je
true; nastavte nafalsepro použití operace ROP místo ní.
Skrytí objektů Ink ve výstupu PDF
Ve výchozím nastavení zůstávají objekty ink během exportu viditelné. Zavolejte IInkOptions::set_HideInk s hodnotou true, když potřebujete čistý výstup bez ručně psaných anotací nebo jiného obsahu ink.
Následující příklad C++ exportuje prezentaci do PDF při skrytí všech objektů 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();
Skrytí objektů Ink při vykreslování snímku jako obrázku
Pro skrytí objektů ink při vykreslování snímků jako bitmapové obrázky nakonfigurujte RenderingOptions::get_InkOptions a předávejte možnosti vykreslování metodě ISlide::GetImage.
Následující příklad C++ vykreslí první snímek jako PNG obrázek bez objektů 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();
Řízení vykreslování masky Ink
Metoda IInkOptions::set_InterpretMaskOpAsOpacity řídí, jak jsou operace masky interpretovány při vykreslování štětců ink. Výchozí hodnota je true, což používá neprůhlednost. Zavolejte metodu s false pro použití operace ROP místo ní.
Následující příklad C++ exportuje snímek do SVG a používá vykreslování založené na ROP pro operace masky 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();
Stejné nastavení lze použít prostřednictvím TiffOptions::get_InkOptions při exportu prezentace nebo při vykreslování snímku do TIFF.
Zvolte, zda skrýt nebo zachovat Ink
Použijte IInkOptions::set_HideInk s hodnotou true, když má být exportovaný soubor čistou verzí anotované prezentace, například finální kopií určenou k distribuci bez revizních značek.
Nechte ink viditelný (výchozí nastavení false), když jsou ink anotace součástí zamýšleného obsahu, jako jsou revizní komentáře, ručně psané poznámky, zvýraznění nebo kresby, které mají zůstat viditelné ve výstupním výsledku. To umožňuje aplikacím generovat samostatné revizní a finální výstupy ze stejné prezentace bez úpravy zdrojových objektů ink.
Často kladené otázky
Mohu změnit barvu nebo velikost existujícího tahu ink?
Ano. Získáte stopu pomocí IInk::get_Traces, poté změníte její IInkTrace::get_Brush. Můžete zavolat IInkBrush::set_Color a IInkBrush::set_Size na štětec.
Mění skrytí ink zdrojovou prezentaci?
Ne. IInkOptions::set_HideInk ovlivňuje pouze vykreslený nebo exportovaný výsledek; neodstraňuje ani nemodifikuje objekty ink ve zdrojové prezentaci.
Které exportní formáty podporují možnosti ink?
Možnosti ink můžete konfigurovat pro PDF, HTML, SVG, TIFF a bitmapové snímky snímků prostřednictvím příslušných možností exportu nebo vykreslování uvedených výše.
Další čtení
- Pro čtení o tvarech obecně navštivte sekci PowerPoint Shapes.
- Pro více informací o efektivních hodnotách viz Shape Effective Properties.
- Podrobnosti o exportu PDF najdete v Convert PPT and PPTX to PDF.
- Podrobnosti o exportu HTML najdete v Convert PowerPoint Presentations to HTML.
- Podrobnosti o exportu SVG najdete v Render Presentation Slides as SVG Images.
- Podrobnosti o exportu TIFF najdete v Convert PowerPoint Presentations to TIFF.
- Podrobnosti o vykreslování snímků na obrázky najdete v Convert Presentation Slides to Images.