XPSファイルのベクターグラフィックス図形をコーディングする

XPSファイルのベクターグラフィックスを操作するためのC++ APIソリューション

 

XPSは、他のページ記述言語(Page Description Languages)と同様に、ベクターグラフィックスを扱うことができます。このC++ APIソリューションには、XPSファイルのベクターグラフィックスの操作が含まれています。幅広い機能を提供しており、その一部はここのコードスニペット(code snippet)で示されています。ファイルに楕円形や長方形の図形を追加する方法のほんの一例です。さらに、これらの図形の色を管理する方法を学びます。この方法に従うことで、必要な幾何学模様を作成できるようになります。

XPSのベクターグラフィックス図形(vector graphics shapes)を操作するには、次のものが必要です。

  • Aspose.Page for C++ API。これは、C++プラットフォーム向けの機能が豊富で、強力かつ使いやすいドキュメント操作および変換APIです。

  • 最新バージョンを直接ダウンロードできます。NuGetパッケージマネージャーを開き、Aspose.Page.Cppを検索してインストールするだけです。パッケージマネージャーコンソール(Package Manager Console)から次のコマンドを使用することもできます。

Package Manager Console Command

    PM> Install-Package Aspose.Page.Cpp

C++で長方形(矩形)を追加する手順。

  1. まず、ドキュメントが保存されるディレクトリへのパスを設定します。
  2. XpsDocument クラス をインスタンス化して、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ファイルに楕円やその他の図を追加するには、長方形を追加する場合と同じ手順を実行し、同じエンティティを使用する必要があります。

楕円を追加
    // 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 ベースで、プラットフォームに依存せずレイアウトを保持します。