그라디언트 그리드 투명도 XPS 추가

XPS 파일은 많은 시각적 정보를 표시하는 데 사용할 수 있습니다. 텍스트, 이미지, 개체 투명도, 그리드, 그라디언트 및 기타 여러 기능을 지원합니다. 요구 사항에 따라 XPS 파일에 그라디언트, 격자 및 투명 개체를 삽입할 수 있습니다. 이 기사에서는 다양한 예제 및 사용 사례와 함께 이러한 기능을 자세히 살펴보겠습니다. 다음 주제를 살펴보겠습니다.

C++용 XPS API 설치

XPS, PS, EPS 및 기타 지원되는 파일 형식을 조작하기 위해 프로그래밍 응용 프로그램에서 Aspose.Page for C++ API를 빠르고 쉽게 구성할 수 있습니다. 공식 다운로드에서 DLL 파일을 다운로드하거나 아래 명령을 사용하여 NuGet 갤러리에서 설치하기만 하면 됩니다.

PM> Install-Package Aspose.Page.Cpp 

C++를 사용하여 XPS 파일에 그라디언트 추가

때로는 XPS 파일에 그라디언트를 추가해야 합니다. API를 사용하여 선형, 수평 및 수직 그래디언트를 추가할 수 있으므로 XPS 파일을 조작할 수 있습니다. XPS 파일에 다음 그라디언트를 추가해 보겠습니다.

C++로 XPS 파일에 수직 그라디언트 추가

몇 가지 간단한 API 호출로 XPS 파일에 수직 그라디언트를 쉽게 추가할 수 있습니다. 다음은 수직 그라디언트를 추가하는 단계입니다.

  1. 새 [XPS 문서] 만들기7
  2. XpsGradientStop 목록 초기화
  3. 지오메트리를 정의하여 새 경로 생성
  4. 결과 XPS 문서 저장

아래 코드는 이러한 단계를 기반으로 하며 C++를 사용하여 XPS 파일에 수직 그라데이션을 추가하는 방법을 보여줍니다.

// 새 XPS 문서 만들기
auto doc = System::MakeObject<XpsDocument>();

// XpsGradientStop 목록 초기화
auto stops = System::MakeObject<System::Collections::Generic::List<System::SharedPtr<XpsGradientStop>>>();
stops->Add(doc->CreateGradientStop(doc->CreateColor(253, 255, 12, 0), 0.f));
stops->Add(doc->CreateGradientStop(doc->CreateColor(252, 255, 154, 0), 0.359375f));
stops->Add(doc->CreateGradientStop(doc->CreateColor(252, 255, 56, 0), 0.424805f));
stops->Add(doc->CreateGradientStop(doc->CreateColor(253, 255, 229, 0), 0.879883f));
stops->Add(doc->CreateGradientStop(doc->CreateColor(252, 255, 255, 234), 1.f));

// 지오메트리를 축약형으로 정의하여 새로운 경로 생성
System::SharedPtr<XpsPath> path = doc->AddPath(doc->CreatePathGeometry(u"M 10,110 L 228,110 228,200 10,200"));
path->set_RenderTransform(doc->CreateMatrix(1.f, 0.f, 0.f, 1.f, 20.f, 70.f));
path->set_Fill(doc->CreateLinearGradientBrush(System::Drawing::PointF(10.f, 110.f), System::Drawing::PointF(10.f, 200.f)));
(System::DynamicCast<Aspose::Page::Xps::XpsModel::XpsGradientBrush>(path->get_Fill()))->get_GradientStops()->AddRange(stops);

// 결과 XPS 문서 저장
doc->Save(RunExamples::outDir() + u"AddVerticalGradient_out.xps");

C++를 사용하여 XPS에서 수평 그라데이션 추가

XPS 파일의 또 다른 가능한 그라디언트 변형은 수평 그라디언트입니다. 수평 기울기를 추가하는 접근 방식은 위에서 논의한 사용 사례와 약간 관련이 있습니다. 다음은 수평 그라디언트를 추가하기 위해 따라야 하는 단계입니다.

  1. 새 XPS 문서 만들기
  2. XpsGradientStop을 사용하여 기울기 정지점 지정
  3. 지오메트리로 경로 생성
  4. 출력 XPS 문서 저장

다음 코드 조각은 C++를 사용하여 XPS 파일에 수평 그라데이션을 추가하는 방법을 자세히 설명합니다.

// 새 XPS 문서 만들기
auto doc = System::MakeObject<XpsDocument>();

// XpsGradientStop 목록 초기화
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(255, 244, 253, 225), 0.0673828f));
stops->Add(doc->CreateGradientStop(doc->CreateColor(255, 251, 240, 23), 0.314453f));
stops->Add(doc->CreateGradientStop(doc->CreateColor(255, 252, 209, 0), 0.482422f));
stops->Add(doc->CreateGradientStop(doc->CreateColor(255, 241, 254, 161), 0.634766f));
stops->Add(doc->CreateGradientStop(doc->CreateColor(255, 53, 253, 255), 0.915039f));
stops->Add(doc->CreateGradientStop(doc->CreateColor(255, 12, 91, 248), 1.f));

// 지오메트리를 축약형으로 정의하여 새로운 경로 생성
System::SharedPtr<XpsPath> path = doc->AddPath(doc->CreatePathGeometry(u"M 10,210 L 228,210 228,300 10,300"));
path->set_RenderTransform(doc->CreateMatrix(1.f, 0.f, 0.f, 1.f, 20.f, 70.f));
path->set_Fill(doc->CreateLinearGradientBrush(System::Drawing::PointF(10.f, 0.f), System::Drawing::PointF(228.f, 0.f)));
(System::DynamicCast<Aspose::Page::Xps::XpsModel::XpsGradientBrush>(path->get_Fill()))->get_GradientStops()->AddRange(stops);

// 결과 XPS 문서 저장
doc->Save(RunExamples::outDir() + u"AddHorizontalGradient_out.xps");

C++로 XPS 파일에 그리드 삽입

Aspose.Page for C++ API를 사용하면 렌더링을 제어하는 많은 속성이 있는 XPS 파일의 그리드를 렌더링할 수 있습니다. C++ 기반 응용 프로그램에서 XPS 파일에 그리드를 삽입하는 예를 살펴보겠습니다. 아래 단계를 고려하여 이 기능을 사용할 수 있습니다.

  1. XpsDocument 클래스 개체 초기화
  2. 그리드의 지오메트리 지정 VisualBrush
  3. 자홍색 격자 VisualBrush용 Canvas 만들기
  4. 비주얼 브러시 생성 및 그리드 추가
  5. 출력 XPS 파일 저장

아래 코드는 C++를 사용하여 XPS 파일에 그리드를 삽입하는 방법을 설명하는 다음 단계를 기반으로 합니다.

auto doc = System::MakeObject<XpsDocument>();

// 마젠타 격자의 기하학 VisualBrush
System::SharedPtr<XpsPathGeometry> pathGeometry = doc->CreatePathGeometry();
pathGeometry->AddSegment(doc->CreatePolyLineSegment(System::MakeArray<System::Drawing::PointF>({ System::Drawing::PointF(240.f, 5.f), System::Drawing::PointF(240.f, 310.f), System::Drawing::PointF(0.f, 310.f) })));
pathGeometry->idx_get(0)->set_StartPoint(System::Drawing::PointF(0.f, 5.f));

// 마젠타 그리드용 캔버스 VisualBrush
System::SharedPtr<XpsCanvas> visualCanvas = doc->CreateCanvas();

System::SharedPtr<XpsPath> visualPath = visualCanvas->AddPath(doc->CreatePathGeometry(u"M 0,4 L 4,4 4,0 6,0 6,4 10,4 10,6 6,6 6,10 4,10 4,6 0,6 Z"));
visualPath->set_Fill(doc->CreateSolidColorBrush(doc->CreateColor(1.f, .61f, 0.1f, 0.61f)));

System::SharedPtr<XpsPath> gridPath = doc->CreatePath(pathGeometry);

//Visual Brush 만들기, 일부 XPS 조각(벡터 그래픽 및 글리프)으로 지정됩니다.
gridPath->set_Fill(doc->CreateVisualBrush(visualCanvas, System::Drawing::RectangleF(0.f, 0.f, 10.f, 10.f), System::Drawing::RectangleF(0.f, 0.f, 10.f, 10.f)));
(System::DynamicCast<Aspose::Page::Xps::XpsModel::XpsVisualBrush>(gridPath->get_Fill()))->set_TileMode(Aspose::Page::Xps::XpsModel::XpsTileMode::Tile);

// 새 캔버스
System::SharedPtr<XpsCanvas> canvas = doc->AddCanvas();
canvas->set_RenderTransform(doc->CreateMatrix(1.f, 0.f, 0.f, 1.f, 268.f, 70.f));

// 그리드 추가
canvas->AddPath(gridPath);

// 중간 상단에 빨간색 투명 직사각형
System::SharedPtr<XpsPath> path = canvas->AddPath(doc->CreatePathGeometry(u"M 30,20 l 258.24,0 0,56.64 -258.24,0 Z"));
path = canvas->AddPath(doc->CreatePathGeometry(u"M 10,10 L 228,10 228,100 10,100"));
path->set_Fill(doc->CreateSolidColorBrush(doc->CreateColor(1.0f, 0.0f, 0.0f)));
path->set_Opacity(0.7f);

// 결과 XPS 문서 저장
doc->Save(RunExamples::outDir() + u"AddGrid_out.xps");

C++를 사용하여 XPS 파일에 투명 개체 삽입

XPS 파일 작업을 위한 또 다른 흥미로운 기능은 투명도 및 불투명도 지원입니다. 다양한 시나리오에서 XPS 파일에 투명 개체를 추가해야 할 수도 있습니다. 이것은 다음 단계를 통해 달성할 수 있습니다.

  1. 새 [XPS 문서] 만들기11
  2. 닫힌 직사각형 형상으로 경로 만들기
  3. 다른 경로에 대한 지오메트리 추가
  4. 출력 XPS 문서 저장

이 단계 다음에는 C++ 프로그래밍 언어로 XPS 파일에 투명 개체를 추가하는 방법을 보여주는 다음 코드가 나옵니다.

// 새 XPS 문서 만들기
auto doc = System::MakeObject<XpsDocument>();

// 투명성을 보여주기 위해
doc->AddPath(doc->CreatePathGeometry(u"M120,0 H400 v1000 H120"))->set_Fill(doc->CreateSolidColorBrush(System::Drawing::Color::get_Gray()));
doc->AddPath(doc->CreatePathGeometry(u"M300,120 h600 V420 h-600"))->set_Fill(doc->CreateSolidColorBrush(System::Drawing::Color::get_Gray()));

// 닫힌 직사각형 형상으로 경로 만들기
System::SharedPtr<XpsPath> path1 = doc->CreatePath(doc->CreatePathGeometry(u"M20,20 h200 v200 h-200 z"));
// 경로1을 채우기 위해 파란색 단색 브러시 설정
path1->set_Fill(doc->CreateSolidColorBrush(System::Drawing::Color::get_Blue()));
// 현재 페이지에 추가
System::SharedPtr<XpsPath> path2 = doc->Add(path1);

// path1이 다른 요소 내부에 배치되지 않은 즉시 path1과 path2는 동일합니다.
// (즉, path1에는 부모 요소가 없음을 의미합니다).
// 페이지의 사각형 색상 때문에 효과적으로 녹색으로 바뀝니다.
path2->set_Fill(doc->CreateSolidColorBrush(System::Drawing::Color::get_Green()));

// 이제 다시 한 번 path2를 추가합니다. 이제 path2에는 부모가 있습니다. 따라서 path3은 path2와 동일하지 않습니다.
// 따라서 페이지에 새 사각형이 그려집니다 ...
System::SharedPtr<XpsPath> path3 = doc->Add(path2);
// ... 그리고 우리는 그것을 300 단위 더 낮추었습니다 ...
path3->set_RenderTransform(doc->CreateMatrix(1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 300.0f));
// ... 그리고 그것을 채우기 위해 빨간색 단색 브러시를 설정합니다.
path3->set_Fill(doc->CreateSolidColorBrush(System::Drawing::Color::get_Red()));

// path2의 지오메트리로 새 path4 생성 ...
System::SharedPtr<XpsPath> path4 = doc->AddPath(path2->get_Data());
// ... 오른쪽으로 300단위 이동 ...
path4->set_RenderTransform(doc->CreateMatrix(1.0f, 0.0f, 0.0f, 1.0f, 300.0f, 0.0f));
// ... 및 파란색 단색 채우기 설정
path4->set_Fill(doc->CreateSolidColorBrush(System::Drawing::Color::get_Blue()));

// path4를 다시 한 번 추가합니다.
System::SharedPtr<XpsPath> path5 = doc->Add(path4);
// path4와 path5는 다시 동일하지 않습니다 ...
// (path5를 300단위 아래로 이동)
path5->set_RenderTransform(path5->get_RenderTransform()->Clone());
// RenderTransform 값을 path4에서 연결 해제하려면(Fill 속성에 대한 다음 설명 참조)
path5->get_RenderTransform()->Translate(0.0f, 300.0f);
// ... 그러나 Fill 속성의 불투명도를 설정하면 path5와 path4 모두에 적용됩니다.
// 브러시는 path5와 path4에 대해 동일하게 유지되는 복잡한 속성 값이기 때문에
path5->get_Fill()->set_Opacity(0.8f);

// path2의 지오메트리로 새 path6 생성 ...
System::SharedPtr<XpsPath> path6 = doc->AddPath(path2->get_Data());
// ... 오른쪽으로 600단위 이동...
path6->set_RenderTransform(doc->CreateMatrix(1.0f, 0.0f, 0.0f, 1.0f, 600.0f, 0.0f));
// ... 및 노란색 단색 채우기 설정
path6->set_Fill(doc->CreateSolidColorBrush(System::Drawing::Color::get_Yellow()));

// 이제 path6의 클론을 추가하십시오 ...
System::SharedPtr<XpsPath> path7 = doc->Add(path6->Clone());
// (path5를 300단위 아래로 이동)
path7->set_RenderTransform(path7->get_RenderTransform()->Clone());
path7->get_RenderTransform()->Translate(0.0f, 300.0f);
// ... path7의 불투명도 설정
path7->get_Fill()->set_Opacity(0.8f);
// 이제 속성 값이 요소와 함께 복제되는 즉시 불투명도가 독립적으로 적용됩니다.

// 다음 코드 블록은 이전 블록과 동일합니다.
// path6 자체를 추가하십시오. path6과 path7은 동일하지 않습니다. Fill 속성 값은 동일하지만 
//XpsPath 경로7 = doc.Add(경로6);
//경로7.RenderTransform = 경로7.RenderTransform.Clone();
//경로7.RenderTransform.Translate(0, 300);
// path6의 Fill 속성에서 path7의 Fill 속성을 "연결 해제"하려면 이를 클론(또는 path6의 Fill 클론)에 다시 할당합니다.
//path7.Fill = ((XpsSolidColorBrush)path7.Fill).Clone();
//path7.Fill.Opacity = 0.8f;

// 결과 XPS 문서 저장
doc->Save(RunExamples::outDir() + u"WorkingWithTransparency_out.xps");

결론

간단히 말해서 XPS 파일과 함께 사용할 수 있는 여러 기능을 살펴보았습니다. XPS 파일에서 그라디언트, 선형, 수평 또는 수직뿐만 아니라 격자 또는 투명 개체를 추가할 수 있습니다. 또한 예제 프로젝트를 다운로드하여 다른 여러 기능을 살펴볼 수 있습니다. 모호한 점이 있는 경우 무료 지원 포럼에서 언제든지 저희에게 편지를 보내주십시오. 우리는 당신을 안내하는 것을 영광으로 생각합니다!

또한보십시오