Робота з фігурами в PostScript | C++

Додайте фігури в документ PS

Додайте прямокутник до PS

Щоб додати прямокутник до PsDocument за допомогою бібліотеки Aspose.Page для C++, нам слід виконати наступні кроки:

  1. Створіть вихідний потік для отриманого файлу PS.
  2. Створіть об’єкт PsSaveOptions із параметрами за замовчуванням.
  3. Створіть 1-сторінковий PsDocument із уже створеним вихідним потоком і параметрами збереження.
  4. Створіть прямокутник System.Drawing.Drawing2D.GraphicsPath з прямокутника.
  5. Установіть фарбу для поточного стану графіки PsDocument.
  6. Заповніть контур прямокутника.
  7. Закрийте сторінку.
  8. Збережіть документ.

Якщо нам потрібно обвести (контур) прямокутник, перші 4 і останні 2 кроки будуть однаковими, але пункти 5 і 6 будуть такими:

  1. Встановіть штрих на поточний графічний стан PsDocument.

  2. Обведіть контур прямокутника.

 1    // The path to the documents directory.
 2    System::String dataDir = RunExamples::GetDataDir_WorkingWithShapes();
 3    
 4    //Create output stream for PostScript document
 5    {
 6        System::SharedPtr<System::IO::Stream> outPsStream = System::MakeObject<System::IO::FileStream>(dataDir + u"AddRectangle_outPS.ps", System::IO::FileMode::Create);
 7        // Clearing resources under 'using' statement
 8        System::Details::DisposeGuard<1> __dispose_guard_0({ outPsStream});
 9        // ------------------------------------------
10        
11        try
12        {
13            //Create save options with A4 size
14            System::SharedPtr<PsSaveOptions> options = System::MakeObject<PsSaveOptions>();
15            
16            // Create new 1-paged PS Document
17            System::SharedPtr<PsDocument> document = System::MakeObject<PsDocument>(outPsStream, options, false);
18            
19            //Create graphics path from the first rectangle
20            System::SharedPtr<System::Drawing::Drawing2D::GraphicsPath> path = System::MakeObject<System::Drawing::Drawing2D::GraphicsPath>();
21            path->AddRectangle(System::Drawing::RectangleF(250.0f, 100.0f, 150.0f, 100.0f));
22            //Set paint
23            document->SetPaint(System::MakeObject<System::Drawing::SolidBrush>(System::Drawing::Color::get_Orange()));
24            //Fill the rectangle
25            document->Fill(path);
26            
27            //Create graphics path from the second rectangle
28            path = System::MakeObject<System::Drawing::Drawing2D::GraphicsPath>();
29            path->AddRectangle(System::Drawing::RectangleF(250.0f, 300.0f, 150.0f, 100.0f));
30            //Set stroke
31            document->SetStroke(System::MakeObject<System::Drawing::Pen>(System::MakeObject<System::Drawing::SolidBrush>(System::Drawing::Color::get_Red()), 3.0f));
32            //Stroke (outline) the rectangle
33            document->Draw(path);
34            
35            //Close current page
36            document->ClosePage();
37            
38            //Save the document
39            document->Save();
40        }
41        catch(...)
42        {
43            __dispose_guard_0.SetCurrentException(std::current_exception());
44        }
45    }

Див. роботу з фігурами в документах PS у .NET або [Java](/page/{{lang.url- фрагмент}}java/ps/working-with-shapes/).


Результат виконання цього коду виглядає як

Додати прямокутник

Додайте Ellipse до PS

Щоб додати еліпс до PsDocument, також потрібно виконати 8 кроків:

  1. Створіть вихідний потік для отриманого файлу PS.
  2. Створіть об’єкт PsSaveOptions із параметрами за замовчуванням.
  3. Створіть 1-сторінковий PsDocument із уже створеним вихідним потоком і параметрами збереження.
  4. Створіть еліпс System.Drawing.Drawing2D.GraphicsPath із прямокутника.
  5. Встановіть малюнок до поточного стану графіки PsDocument.
  6. Заповніть контур еліпса.
  7. Закрийте сторінку.
  8. Збережіть документ.

Якщо нам потрібно обвести (обвести контур) еліпс, перші 4 і останні 2 кроки будуть однаковими, але пункти 5 і 6 будуть такими:

  1. Установіть stroke на поточний графічний стан PsDocument.
  2. Stroke (outline) the ellipse path.
 1    // The path to the documents directory.
 2    System::String dataDir = RunExamples::GetDataDir_WorkingWithShapes();
 3    
 4    //Create output stream for PostScript document
 5    {
 6        System::SharedPtr<System::IO::Stream> outPsStream = System::MakeObject<System::IO::FileStream>(dataDir + u"AddEllipse_outPS.ps", System::IO::FileMode::Create);
 7        // Clearing resources under 'using' statement
 8        System::Details::DisposeGuard<1> __dispose_guard_0({ outPsStream});
 9        // ------------------------------------------
10        
11        try
12        {
13            //Create save options with A4 size
14            System::SharedPtr<PsSaveOptions> options = System::MakeObject<PsSaveOptions>();
15            
16            // Create new 1-paged PS Document
17            System::SharedPtr<PsDocument> document = System::MakeObject<PsDocument>(outPsStream, options, false);
18            
19            //Create graphics path from the first ellipse
20            System::SharedPtr<System::Drawing::Drawing2D::GraphicsPath> path = System::MakeObject<System::Drawing::Drawing2D::GraphicsPath>();
21            path->AddEllipse(System::Drawing::RectangleF(250.0f, 100.0f, 150.0f, 100.0f));
22            //Set paint
23            document->SetPaint(System::MakeObject<System::Drawing::SolidBrush>(System::Drawing::Color::get_Orange()));
24            //Fill the ellipse
25            document->Fill(path);
26            
27            //Create graphics path from the second ellipse
28            path = System::MakeObject<System::Drawing::Drawing2D::GraphicsPath>();
29            path->AddEllipse(System::Drawing::RectangleF(250.0f, 300.0f, 150.0f, 100.0f));
30            //Set stroke
31            document->SetStroke(System::MakeObject<System::Drawing::Pen>(System::MakeObject<System::Drawing::SolidBrush>(System::Drawing::Color::get_Red()), 3.0f));
32            //Stroke (outline) the ellipse
33            document->Draw(path);
34            
35            //Close current page
36            document->ClosePage();
37            
38            //Save the document
39            document->Save();
40        }
41        catch(...)
42        {
43            __dispose_guard_0.SetCurrentException(std::current_exception());
44        }
45    }

Результат виконання цього коду виглядає як

Додати еліпс

Як ми бачимо, будь-яку форму, як закриту, так і незамкнену, яку можна помістити в System.Drawing.Drawing2D.GraphicsPath, можна заповнити або намалювати PsDocument. Його також можна обрізати, але це буде описано в іншій статті.

Ви можете завантажити приклади та файли даних із GitHub.

Have any questions about Aspose.Page?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.