Προσαρμογή Σχημάτων Παρουσίασης σε C++

Επισκόπηση

Αυτό το άρθρο εξηγεί πώς να προσαρμόσετε τα σχήματα παρουσίασης στο Aspose.Slides επεξεργάζοντας τη γεωμετρία του σχήματος μέσω σημείων επεξεργασίας και διαδρομών γεωμετρίας. Δείχνει πώς να εργάζεστε με GeometryPath και IGeometryPath για να τροποποιήσετε υπάρχοντα σχήματα, να εκτελέσετε βασικές λειτουργίες επεξεργασίας διαδρομής, να προσθέσετε ή να αφαιρέσετε σημεία και να εφαρμόσετε τη ενημερωμένη γεωμετρία πίσω σε ένα σχήμα.

Επίσης, παρουσιάζει πώς να δημιουργήσετε προσαρμοσμένα και σύνθετα σχήματα, να δημιουργήσετε σχήματα με καμπυλωτές γωνίες και να προσδιορίσετε αν η γεωμετρία ενός σχήματος είναι κλειστή.

Αλλαγή σχήματος χρησιμοποιώντας σημεία επεξεργασίας

Στο PowerPoint, μπορείτε να χρησιμοποιήσετε Edit Points για να τροποποιήσετε ένα τετράγωνο:

  • Μετακινήστε μια γωνία προς τα μέσα ή προς τα έξω.
  • Ρυθμίστε την καμπυλότητα σε ένα σημείο.
  • Προσθέστε νέα σημεία.

Η επεξεργασία σημείων σας επιτρέπει να τροποποιήσετε το περίγραμμα ενός σχήματος ή να χρησιμοποιήσετε ένα υπάρχον σχήμα ως βάση για ένα νέο.

Συμβουλές επεξεργασίας σχήματος

overview_image

Κατά την επεξεργασία σχήματος στο PowerPoint, θυμηθείτε τις παρακάτω έννοιες:

  • Ένα σχήμα (ή η διαδρομή του) μπορεί να είναι είτε κλειστό είτε ανοιχτό.
  • Η διαδρομή ενός σχήματος αποτελείται από άγκυρες σημεία συνδεδεμένα με τμήματα.
  • Ένα τμήμα μπορεί να είναι ευθύ ή καμπυλωτό. Τα άγκυρα σημεία και τα χειριστήρια ελέγχου καθορίζουν το σχήμα του.
  • Τα άγκυρα σημεία υπάρχουν ως γωνιακά σημεία, ευθεία σημεία ή λείες σημεία:
    • Σε γωνιακό σημείο, τα δύο γειτονικά τμήματα μπορούν να συναντηθούν με γωνία.
    • Σε λείο σημείο, τα δύο χειριστήρια ελέγχου είναι ευθυγραμμισμένα και ίσου αποστάσεως από το άγκυρα σημείο.
    • Σε ευθύ σημείο, τα δύο χειριστήρια ελέγχου είναι ευθυγραμμισμένα αλλά μπορεί να έχουν διαφορετικές αποστάσεις από το άγκυρα σημείο.
  • Η μετακίνηση των άγκυρων σημείων ή η ρύθμιση των χειριστηρίων τους αλλάζει το περίγραμμα του σχήματος.

Για να επεξεργαστείτε σχήματα PowerPoint μέσω σημείων επεξεργασίας, το Aspose.Slides παρέχει την κλάση GeometryPath και το interface IGeometryPath.

  • Μια παρουσίαση του GeometryPath αντιπροσωπεύει μια διαδρομή γεωμετρίας του αντικειμένου IGeometryShape.
  • Για να ανακτήσετε το GeometryPath από την παρουσίαση του IGeometryShape, μπορείτε να χρησιμοποιήσετε τη μέθοδο IGeometryShape::GetGeometryPaths.
  • Για να ορίσετε το GeometryPath για ένα σχήμα, μπορείτε να χρησιμοποιήσετε αυτές τις μεθόδους: IGeometryShape::SetGeometryPath για σχήματα με μία διαδρομή και IGeometryShape::SetGeometryPaths για σχήματα με πολλαπλές διαδρομές.
  • Για να προσθέσετε τμήματα, μπορείτε να χρησιμοποιήσετε τις μεθόδους του IGeometryPath.
  • Χρησιμοποιώντας τις μεθόδους IGeometryPath::set_Stroke και IGeometryPath::set_FillMode, μπορείτε να καθορίσετε την εμφάνιση μιας διαδρομής γεωμετρίας.
  • Με τη μέθοδο IGeometryPath::get_PathData, μπορείτε να ανακτήσετε τη διαδρομή γεωμετρίας ενός GeometryShape ως πίνακα τμημάτων διαδρομής.

Απλές λειτουργίες επεξεργασίας

Χρησιμοποιήστε τις παρακάτω μεθόδους για να επεξεργαστείτε μια διαδρομή γεωμετρίας. Οι υπερφορτώσεις που δέχονται δείκτη εισάγουν ένα τμήμα στη θέση αυτή (μηδενικής βάσης) στον πίνακα τμημάτων της διαδρομής.

Operation Method
Προσθήκη ή εισαγωγή μιας ευθείας γραμμής. GeometryPath::LineTo
Προσθήκη ή εισαγωγή μιας κυβικής καμπύλης Bézier με δύο σημεία ελέγχου και ένα τελικό σημείο. GeometryPath::CubicBezierTo
Προσθήκη ή εισαγωγή μιας τετραγωνικής καμπύλης Bézier με ένα σημείο ελέγχου και ένα τελικό σημείο. GeometryPath::QuadraticBezierTo
Προσθήκη ενός ελλειπτικού τόξου με τις καθορισμένες διαστάσεις και γωνίες σε μοίρες. GeometryPath::ArcTo
Κλείσιμο του τρέχοντος σχήματος συνδέοντας το τελικό σημείο του με το αρχικό του. GeometryPath::CloseFigure
Ορισμός του αρχικού σημείου ενός σχήματος. GeometryPath::MoveTo
Αφαίρεση τμήματος σε δείκτη μηδενικής βάσης. GeometryPath::RemoveAt

Προσθήκη προσαρμοσμένων σημείων σε σχήμα

Αυτό το παράδειγμα εισάγει δύο σημεία σε ένα ορθογώνιο σχήμα χρησιμοποιώντας το GeometryPath::LineTo και εφαρμόζει τη επεξεργασμένη διαδρομή με το IGeometryShape::SetGeometryPath. Οι συντεταγμένες είναι τοπικές στο σχήμα: και τα δύο νέα σημεία βρίσκονται στο κέντρο του, 100 μονάδες από τα αριστερά και 50 μονάδες από τα πάνω. Οι δείκτες τμημάτων 1 και 4 τα τοποθετούν στις άνω και κάτω άκρες, τραβώντας αυτές τις άκρες προς τα μέσα.

#include <DOM/IAutoShape.h>
#include <DOM/IGeometryPath.h>
#include <DOM/IShapeCollection.h>
#include <DOM/ISlide.h>
#include <DOM/ISlideCollection.h>
#include <DOM/Presentation.h>
#include <DOM/ShapeType.h>
#include <system/smart_ptr.h>

using namespace Aspose::Slides;
using namespace System;

auto presentation = System::MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);

auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 100.0f, 100.0f, 200.0f, 100.0f);

auto geometryPath = shape->GetGeometryPaths()->idx_get(0);
geometryPath->LineTo(100.0f, 50.0f, 1);
geometryPath->LineTo(100.0f, 50.0f, 4);

shape->SetGeometryPath(geometryPath);

example1_image

Αφαίρεση σημείων από σχήμα

Αυτό το παράδειγμα αλλάζει το περίγραμμα μιας καρδιάς αφαιρώντας το τμήμα στο δείκτη μηδενικής βάσης 2 με το GeometryPath::RemoveAt. Η εφαρμογή της τροποποιημένης διαδρομής με το IGeometryShape::SetGeometryPath ενημερώνει το περίγραμμα του σχήματος.

#include <DOM/IAutoShape.h>
#include <DOM/IGeometryPath.h>
#include <DOM/IShapeCollection.h>
#include <DOM/ISlide.h>
#include <DOM/ISlideCollection.h>
#include <DOM/Presentation.h>
#include <DOM/ShapeType.h>
#include <system/smart_ptr.h>

using namespace Aspose::Slides;
using namespace System;

auto presentation = System::MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);

auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Heart, 100.0f, 100.0f, 300.0f, 300.0f);

auto path = shape->GetGeometryPaths()->idx_get(0);
path->RemoveAt(2);

shape->SetGeometryPath(path);

example2_image

Δημιουργία προσαρμοσμένου σχήματος

Αυτό το παράδειγμα δημιουργεί ένα πέντε‑άκρονο αστέρι με το GeometryPath. Εναλλασσόμενες εξωτερικές και εσωτερικές ακτίνες 100 και 50 μονάδες ορίζουν τις άκρες και τις εσοχές· ένα βήμα 72 μοιρών τοποθετεί τις πέντε άκρες ομοιόμορφα. Η διαδρομή κλείνει με το GeometryPath::CloseFigure και εφαρμόζεται σε ένα ορθογώνιο σχήμα χρησιμοποιώντας το IGeometryShape::SetGeometryPath, αντικαθιστώντας το περίγραμμά του.

#include <DOM/GeometryPath.h>
#include <DOM/IAutoShape.h>
#include <DOM/IShapeCollection.h>
#include <DOM/ISlide.h>
#include <DOM/ISlideCollection.h>
#include <DOM/Presentation.h>
#include <DOM/ShapeType.h>
#include <drawing/point_f.h>
#include <system/collections/list.h>
#include <system/math.h>
#include <system/smart_ptr.h>

using namespace Aspose::Slides;
using namespace System;
using namespace System::Collections::Generic;
using namespace System::Drawing;

auto points = System::MakeObject<List<PointF>>();

auto outerRadius = 100.0f;
auto innerRadius = 50.0f;
auto angleStep = 72;

for (auto angle = -90; angle < 270; angle += angleStep)
{
    auto radians = angle * (Math::PI / 180.f);
    auto x = outerRadius * Math::Cos(radians);
    auto y = outerRadius * Math::Sin(radians);
    points->Add(PointF((float)x + outerRadius, (float)y + outerRadius));

    radians = Math::PI * (angle + angleStep / 2) / 180.0;
    x = innerRadius * Math::Cos(radians);
    y = innerRadius * Math::Sin(radians);
    points->Add(PointF((float)x + outerRadius, (float)y + outerRadius));
}

auto starPath = System::MakeObject<GeometryPath>();
starPath->MoveTo(points->idx_get(0));

for (auto i = 1; i < points->get_Count(); i++)
{
    starPath->LineTo(points->idx_get(i));
}

starPath->CloseFigure();

auto presentation = System::MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);

auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 100.0f, 100.0f, outerRadius * 2, outerRadius * 2);
shape->SetGeometryPath(starPath);

example3_image

Δημιουργία σύνθετου προσαρμοσμένου σχήματος

Αυτό το παράδειγμα ορίζει δύο κλειστές αντικειμενικές GeometryPath για το πάνω και το κάτω τρίτο ενός σχήματος. Η εφαρμογή και των δύο διαδρομών με το IGeometryShape::SetGeometryPaths δημιουργεί ένα ενιαίο σύνθετο σχήμα με ένα κενό στη μέση του τρίτου.

#include <DOM/GeometryPath.h>
#include <DOM/IAutoShape.h>
#include <DOM/IGeometryPath.h>
#include <DOM/IShapeCollection.h>
#include <DOM/ISlide.h>
#include <DOM/ISlideCollection.h>
#include <DOM/Presentation.h>
#include <DOM/ShapeType.h>
#include <system/smart_ptr.h>

using namespace Aspose::Slides;
using namespace System;

auto presentation = System::MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);

auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 100.0f, 100.0f, 200.0f, 100.0f);

auto topPath = System::MakeObject<GeometryPath>();
topPath->MoveTo(0.0f, 0.0f);
topPath->LineTo(shape->get_Width(), 0.0f);
topPath->LineTo(shape->get_Width(), shape->get_Height() / 3);
topPath->LineTo(0.0f, shape->get_Height() / 3);
topPath->CloseFigure();

auto bottomPath = System::MakeObject<GeometryPath>();
bottomPath->MoveTo(shape->get_Height() / 3 * 2, 0.0f);
bottomPath->LineTo(shape->get_Width(), shape->get_Height() / 3 * 2);
bottomPath->LineTo(shape->get_Width(), shape->get_Height());
bottomPath->LineTo(0.0f, shape->get_Height());
bottomPath->CloseFigure();

auto paths = System::MakeArray<SharedPtr<IGeometryPath>>({ topPath, bottomPath });

shape->SetGeometryPaths(paths);

example4_image

Δημιουργία προσαρμοσμένου σχήματος με καμπυλωτές γωνίες

Αυτό το παράδειγμα συνδυάζει ευθεία τμήματα με το GeometryPath::ArcTo για να δημιουργήσει ένα σχήμα με καμπυλωτές γωνίες προς το εσωτερικό. Το μέγεθος κάθε γωνίας ορίζει το πλάτος και το ύψος του τόξου σε μονάδες, και η σάρωση -90 μοιρών σχεδιάζει ένα αντίστροφα δεξιόστροφο τέταρτο έλλειψη. Η ολοκληρωμένη διαδρομή εφαρμόζεται με το IGeometryShape::SetGeometryPath, και η παρουσίαση αποθηκεύεται σε μορφή PPTX.

#include <DOM/GeometryPath.h>
#include <DOM/IAutoShape.h>
#include <DOM/IShapeCollection.h>
#include <DOM/ISlide.h>
#include <DOM/ISlideCollection.h>
#include <DOM/Presentation.h>
#include <DOM/ShapeType.h>
#include <Export/SaveFormat.h>
#include <drawing/point_f.h>

using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System::Drawing;

auto shapeX = 20.f;
auto shapeY = 20.f;
auto shapeWidth = 300.f;
auto shapeHeight = 200.f;

auto leftTopSize = 50.f;
auto rightTopSize = 20.f;
auto rightBottomSize = 40.f;
auto leftBottomSize = 10.f;

auto presentation = System::MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);

auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Custom, shapeX, shapeY, shapeWidth, shapeHeight);

auto topLeft = PointF(leftTopSize, 0.0f);
auto topRight = PointF(shapeWidth - rightTopSize, 0.0f);
auto rightBottom = PointF(shapeWidth, shapeHeight - rightBottomSize);
auto bottomLeft = PointF(leftBottomSize, shapeHeight);
auto leftTop = PointF(0.0f, leftTopSize);

auto geometryPath = System::MakeObject<GeometryPath>();
geometryPath->MoveTo(topLeft);
geometryPath->LineTo(topRight);
geometryPath->ArcTo(rightTopSize, rightTopSize, 180.0f, -90.0f);
geometryPath->LineTo(rightBottom);
geometryPath->ArcTo(rightBottomSize, rightBottomSize, -90.0f, -90.0f);
geometryPath->LineTo(bottomLeft);
geometryPath->ArcTo(leftBottomSize, leftBottomSize, 0.0f, -90.0f);
geometryPath->LineTo(leftTop);
geometryPath->ArcTo(leftTopSize, leftTopSize, 90.0f, -90.0f);
geometryPath->CloseFigure();

shape->SetGeometryPath(geometryPath);

presentation->Save(u"output.pptx", SaveFormat::Pptx);

Εύρεση εάν η γεωμετρία ενός σχήματος είναι κλειστή

Ο παρακάτω βοηθός ελέγχει εάν κάθε μη κενή διαδρομή γεωμετρίας λήγει με τμήμα κλεισίματος. Διαβάζει το IGeometryPath::get_PathData και συγκρίνει την εντολή του τελικού τμήματος IPathSegment::get_PathCommand με το PathCommandType::Close. Επιστρέφει false όταν δεν υπάρχουν μη κενές διαδρομές. Αυτό ελέγχει την τελική εντολή κάθε διαδρομής· δεν εξετάζει κάθε υποσχήμα μέσα σε μια διαδρομή. Το παράδειγμα εκτυπώνει True για ένα ορθογώνιο.

#include <DOM/Presentation.h>
#include <DOM/ISlide.h>
#include <DOM/IShapeCollection.h>
#include <DOM/IAutoShape.h>
#include <DOM/IGeometryShape.h>
#include <DOM/IGeometryPath.h>
#include <DOM/ShapeType.h>
#include <system/array.h>
#include <system/smart_ptr.h>
#include <system/console.h>
#include <DOM/IPathSegment.h>
#include <DOM/PathCommandType.h>

using namespace Aspose::Slides;
using namespace System;

auto isGeometryClosed = [](SharedPtr<IGeometryShape> geometryShape)
{
    auto hasNonemptyPath = false;
    for (auto&& geometryPath : geometryShape->GetGeometryPaths())
    {
        auto segments = geometryPath->get_PathData();
        if (segments->get_Length() == 0)
        {
            continue;
        }

        hasNonemptyPath = true;
        auto lastSegment = segments->idx_get(segments->get_Length() - 1);
        if (lastSegment->get_PathCommand() != PathCommandType::Close)
        {
            return false;
        }
    }
    return hasNonemptyPath;
};

auto presentation = MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);

auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 100, 100, 200, 100);
Console::WriteLine(isGeometryClosed(shape));

Εξαγωγή και εξέταση στοιχείων σχήματος

Χρησιμοποιήστε το IGeometryShape::CreateShapeElements για να εξετάσετε ένα υπάρχον σχήμα ως στοιχεία που περιέχουν σημεία διαδρομής και τύπους σημείων. Μετατρέψτε κάθε επιστρεφόμενο IShapeElement στο ShapeElement για να διαβάσετε τους πίνακες που επιστρέφουν τα get_PathPoints και get_PathTypes. Αυτή η αναπαράσταση είναι χρήσιμη για ανάλυση περιγράμματος ή για μεταβίβαση γεωμετρίας σε προσαρμοσμένα εργαλεία σχεδίασης.

Το παράδειγμα ανοίγει μια παρουσίαση, εντοπίζει το πρώτο γεωμετρικό σχήμα άμεσα στην πρώτη διαφάνεια και εκτυπώνει τα τμήματα της διαδρομής του. Χρησιμοποιήστε μια παρουσίαση που περιέχει ένα σχήμα με ευθείες και καμπυλωτές διαδρομές για να δείτε και τους δύο τύπους εξόδου. Δεν αναζητά μέσα σε ομάδες.

#include <DOM/Presentation.h>
#include <DOM/ISlide.h>
#include <DOM/IShapeCollection.h>
#include <DOM/IAutoShape.h>
#include <DOM/IGeometryShape.h>
#include <DOM/IGeometryPath.h>
#include <DOM/ShapeType.h>
#include <system/array.h>
#include <system/smart_ptr.h>
#include <system/console.h>
#include <DOM/IShapeElement.h>
#include <DOM/ShapeElement.h>

using namespace Aspose::Slides;
using namespace System;

auto presentation = MakeObject<Presentation>(u"input.pptx");
auto slide = presentation->get_Slide(0);

SharedPtr<IGeometryShape> shape;
for (auto&& candidate : slide->get_Shapes())
{
    shape = AsCast<IGeometryShape>(candidate);
    if (shape != nullptr)
    {
        break;
    }
}
if (shape == nullptr)
{
    Console::WriteLine(u"No geometry shape found on the first slide.");
    return;
}

for (auto&& element : shape->CreateShapeElements())
{
    auto shapeElement = ExplicitCast<ShapeElement>(element);
    auto points = shapeElement->get_PathPoints();
    auto types = shapeElement->get_PathTypes();
    Console::WriteLine(u"Shape element:");

    for (auto i = 0; i < points->get_Length(); i++)
    {
        auto pointType = types[i] & 0x07; // Διατηρήστε τον τύπο τμήματος, εξαιρώντας τις σημαίες.
        switch (pointType)
        {
            case 0:
                Console::WriteLine(u"Start figure at {0}", points[i]);
                break;
            case 1:
                Console::WriteLine(u"Line to {0}", points[i]);
                break;
            case 3:
                Console::WriteLine(u"Cubic Bezier: controls {0}, {1}; end {2}", points[i], points[i + 1], points[i + 2]);
                i += 2; // Consume both control points and the endpoint.
                break;
        }
        if ((types[i] & 0x80) != 0)
        {
            Console::WriteLine(u"Close subpath back to its starting point.");
        }
    }
}

Οι πίνακες αντιστοιχούν κατά δείκτη: points[i] είναι ένα σημείο και types[i] περιγράφει τον ρόλο του. Ο τύπος 0 ξεκινά ένα σχήμα, και ο τύπος 1 σχεδιάζει μια γραμμή από το προηγούμενο σημείο στο τρέχον. Ένα κυβικό τμήμα Bézier ξεκινά από το προηγούμενο τελικό σημείο και χρησιμοποιεί τρεις διαδοχικές καταχωρίσεις τύπου 3: δύο σημεία ελέγχου και έπειτα το νέο τελικό σημείο. Η επανάληψη καταναλώνει αυτές τις τρεις καταχωρίσεις μαζί και ελέγχει το τελικό σημείο για κλείσιμο.

Οι τύποι σημείων περιέχουν επίσης σημαίες. Χρησιμοποιήστε τη μάσκα 0x07 για να προσδιορίσετε τον τύπο του τμήματος και ελέγξτε ξεχωριστά το 0x80 για να εντοπίσετε ένα κλειστό υποσύνολο. Για παράδειγμα, 129 (0x81) σημαίνει ένα τελικό σημείο γραμμής που κλείνει ένα υποσύνολο, και 131 (0x83) σημαίνει ένα τελικό σημείο Bézier που κλείνει ένα. Η σύγκριση της ακατέργαστης τιμής μόνο με 1 ή 3 θα χάσει αυτές τις περιπτώσεις. Άλλες σημαίες, όπως dash (0x10) και marker (0x20), δεν αλλάζουν τον βασικό τύπο τμήματος.

Συντεταγμένες και μετασχηματισμοί. Τα σημεία μετρώνται σε points (1/72 ίντσα), με το X να αυξάνεται προς τα δεξιά και το Y προς τα κάτω. Για ένα μη ομαδοποιημένο σχήμα, οι εξαγόμενες συντεταγμένες περιλαμβάνουν ήδη τη θέση που επιστρέφει το get_X και το get_Y και αντανακλούν το τρέχον πλάτος και ύψος του. Για παράδειγμα, ένα μη περιστραμμένο ορθογώνιο στο (100, 200) με μέγεθος 120 × 80 έχει σύνορα περιγράμματος (100, 200)–(220, 280). Μην προσθέτετε ξανά τη θέση του σχήματος. Αφαίρεστε το X και Y του για να λάβετε τις συντεταγμένες σε σχέση με το μη περιστρεφμένο πλαίσιο του.

Τα εξαγόμενα σημεία δεν εφαρμόζουν την περιστροφή που ορίζεται μέσω του set_Rotation ή τις οριζόντιες και κάθετες αντιστροφές. Για να αναπαραγάγετε το εμφανιζόμενο περίγραμμα, εφαρμόστε εκείνους τους μετασχηματισμούς γύρω από το κέντρο του σχήματος. Για ομαδοποιημένα σχήματα, ληφθείτε υπόψη επίσης τη χαρτογράφηση συντεταγμένων της ομάδας και τους μετασχηματισμούς· μην υποθέτετε ότι τα εξαγόμενα σημεία είναι οι τελικές συντεταγμένες που αποδίδονται στη διαφάνεια ή εφαρμόστε μια μετάθεση ή κλίμακα δύο φορές εάν ήδη εμφανίζεται στο πλαίσιο του παιδιού.

Εξέταση έναντι επεξεργασίας. Οι εξαγόμενοι πίνακες περιγράφουν το περίγραμμα· η αλλαγή τους δεν ενημερώνει το αρχικό σχήμα. Επιλέξτε αυτή τη μέθοδο όταν η ανάλυση ή ο κώδικας σχεδίασής σας απαιτεί πίνακες σημείου/τύπου. Χρησιμοποιήστε το GetGeometryPaths όταν χρειάζεστε εντολές γεωμετρίας στο τοπικό σύστημα συντεταγμένων του σχήματος ή θέλετε να επεξεργαστείτε τη γεωμετρία του. Εφαρμόστε τις επεξεργασμένες διαδρομές μέσω των SetGeometryPath ή SetGeometryPaths.

Μετατροπή GeometryPath σε GraphicsPath

Το τρέχον δημόσιο API του Aspose.Slides για C++ δεν αποκαλύπτει μετατροπές μεταξύ διαδρομών γεωμετρίας και διαδρομών γραφικών. Για να εξετάσετε ένα περίγραμμα, χρησιμοποιήστε τα στοιχεία σχήματος όπως περιγράφηκε παραπάνω. Για να επεξεργαστείτε ένα σχήμα, χρησιμοποιήστε διαδρομές γεωμετρίας και εφαρμόστε τις ενημερωμένες διαδρομές στο σχήμα.

Συχνές Ερωτήσεις

Τι θα συμβεί στο γέμισμα και το περίγραμμα μετά την αντικατάσταση της γεωμετρίας;

Το στυλ παραμένει στο σχήμα· μόνο το περίγραμμα αλλάζει. Το γέμισμα και το περίγραμμα εφαρμόζονται αυτόματα στη νέα γεωμετρία.

Πώς να περιστρέψω σωστά ένα προσαρμοσμένο σχήμα μαζί με τη γεωμετρία του;

Χρησιμοποιήστε τη μέθοδο set_Rotation του σχήματος· η γεωμετρία περιστρέφεται μαζί με το σχήμα επειδή είναι δεσμευμένη στο δικό του σύστημα συντεταγμένων.

Μπορώ να μετατρέψω ένα προσαρμοσμένο σχήμα σε εικόνα για να “κλειδώσω” το αποτέλεσμα;

Ναι. Εξάγετε την απαιτούμενη περιοχή της διαφάνειας ή του σχήματος σε μορφή raster· αυτό απλοποιεί την περαιτέρω εργασία με σύνθετες γεωμετρίες.