XPS 파일의 벡터 그래픽 모양 코딩하기

XPS 파일의 벡터 그래픽 작업을 위한 C++ API 솔루션

 

XPS는 다른 페이지 설명 언어(Page Description Languages)와 마찬가지로 벡터 그래픽 작업을 지원합니다. 이 C++ API 솔루션에는 XPS 파일의 벡터 그래픽 조작이 포함되어 있습니다. 이 라이브러리는 광범위한 기능을 제공하며, 그 중 일부는 여기에 있는 코드 스니펫(code snippet)에 설명되어 있습니다. 원형 및 직사각형 모양(도형)을 파일에 추가하는 방법에 대한 몇 가지 예시가 있습니다. 또한 이러한 도형의 색상을 관리하는 방법도 알아봅니다. 이 방법을 따르면 필요한 기하학적 도형을 만들 수 있습니다.

XPS의 벡터 그래픽 도형(vector graphics shapes) 작업을 하려면 다음이 필요합니다:

  • C++ 플랫폼을 위한 풍부한 기능, 강력하고 사용하기 쉬운 문서 조작 및 변환 API인 Aspose.Page for C++ API.

  • NuGet 패키지 관리자를 열고 Aspose.Page.Cpp를 검색하여 설치하기만 하면 최신 버전을 직접 다운로드할 수 있습니다. 패키지 관리자 콘솔(Package Manager Console)에서 다음 명령을 사용할 수도 있습니다.

Package Manager Console Command

    PM> Install-Package Aspose.Page.Cpp

C++로 직사각형을 추가하는 단계.

  1. 먼저, 문서가 저장될 디렉토리의 경로를 설정합니다.
  2. XpsDocument Class 를 인스턴스화(instantiating)하여 XPS 파일을 생성합니다.
  3. 직사각형을 만들려면 XpsPath 클래스의 메서드를 사용합니다.
  4. 마지막으로 XPsDocument.Save 메서드를 호출하여 수정된 XPS 문서를 저장합니다.
직사각형 추가
    // The path to the documents directory.
    System::String dataDir = RunExamples::GetDataDir_WorkingWithShapes();
    // Create new XPS Document
    System::SharedPtr<XpsDocument> doc = System::MakeObject<XpsDocument>();
    // CMYK (blue) solid color stroked rectangle in the lower left
    System::SharedPtr<XpsPath> path = doc->AddPath(doc->CreatePathGeometry(u"M 20,10 L 220,10 220,100 20,100 Z"));
    path->set_Stroke(doc->CreateSolidColorBrush(doc->CreateColor(dataDir + u"uswebuncoated.icc", System::MakeArray<float>({1.0f, 1.000f, 0.000f, 0.000f, 0.000f}))));
    path->set_StrokeThickness(12.f);
    // Save resultant XPS document
    doc->Save(dataDir + u"output/" + u"AddRectangleXPS_out.xps");

C++로 타원(ellipse) 추가하기.

XPS 파일에 타원이나 다른 도형을 추가하려면 직사각형을 추가할 때와 동일한 단계를 수행하고 동일한 엔터티(entities)를 사용해야 합니다.

타원 추가
    // The path to the documents directory.
    System::String dataDir = RunExamples::GetDataDir_WorkingWithShapes();
    // Create new XPS Document
    System::SharedPtr<XpsDocument> doc = System::MakeObject<XpsDocument>();
    // Radial gradient stroked ellipse in the lower left
    System::SharedPtr<System::Collections::Generic::List<System::SharedPtr<XpsGradientStop>>> stops = System::MakeObject<System::Collections::Generic::List<System::SharedPtr<XpsGradientStop>>>();
    stops->Add(doc->CreateGradientStop(doc->CreateColor(0, 0, 255), 0.f));
    stops->Add(doc->CreateGradientStop(doc->CreateColor(255, 0, 0), .25f));
    stops->Add(doc->CreateGradientStop(doc->CreateColor(0, 255, 0), .5f));
    stops->Add(doc->CreateGradientStop(doc->CreateColor(255, 255, 0), .75f));
    stops->Add(doc->CreateGradientStop(doc->CreateColor(255, 0, 0), 1.f));
    
    System::SharedPtr<XpsPath> path = doc->AddPath(doc->CreatePathGeometry(u"M 20,250 A 100,50 0 1 1 220,250 100,50 0 1 1 20,250"));
    path->set_Stroke(doc->CreateRadialGradientBrush(System::Drawing::PointF(575.f, 125.f), System::Drawing::PointF(575.f, 100.f), 75.f, 50.f));
    (System::ExplicitCast<Aspose::Page::XPS::XpsModel::XpsGradientBrush>(path->get_Stroke()))->set_SpreadMethod(Aspose::Page::XPS::XpsModel::XpsSpreadMethod::Reflect);
    (System::ExplicitCast<Aspose::Page::XPS::XpsModel::XpsGradientBrush>(path->get_Stroke()))->get_GradientStops()->AddRange(stops);
    stops->Clear();
    path->set_StrokeThickness(12.f);
    // Save resultant XPS document
    doc->Save(dataDir + u"output/" + u"AddEllipse_outXPS.xps");

XPS XPS 파일 형식이란 무엇입니까?

XPS (XML Paper Specification) は、Microsoft が提供する PDF の代替フォーマットです。XML/HTML ベースで、プラットフォームに依存せずレイアウトを保持します。