Degrade Izgara Saydamlığı XPS Ekle

XPS dosyaları birçok görsel bilgiyi görüntülemek için kullanılabilir. Metin, resimler, nesne şeffaflığı, ızgaralar, degradeler ve diğer birçok özelliği desteklerler. Gereksinimlerinize göre XPS dosyalarına gradyan, ızgara ve şeffaf nesneler ekleyebilirsiniz. Bu yazıda, farklı örnekler ve kullanım durumlarıyla birlikte bu özellikleri ayrıntılı olarak inceleyeceğiz. Aşağıdaki konuları inceleyelim:

C++ için XPS API’sini Yükleme

Aspose.Page for C++ API’yi programlama uygulamalarınızda XPS, PS, EPS ve diğer desteklenen dosya formatlarını işlemek için hızlı ve kolay bir şekilde yapılandırabilirsiniz. DLL dosyasını resmi İndirilenler‘den indirin veya aşağıdaki komutla NuGet galerisinden kurun:

PM> Install-Package Aspose.Page.Cpp 

C++ kullanarak XPS dosyasına Degrade ekleme

Bazen XPS dosyalarına degrade eklemeniz gerekir. API doğrusal, yatay ve dikey gradyan eklemenize izin verdiği için XPS dosyasını değiştirebilirsiniz. Aşağıdaki gradyanları bir XPS dosyasına ekleyelim:

C++ ile XPS dosyasına Dikey Degrade ekleyin

Birkaç basit API çağrısıyla XPS dosyalarına kolayca dikey gradyan ekleyebilirsiniz. Dikey degradeyi ekleme adımları aşağıdadır:

  1. Yeni bir XPS Belgesi oluşturun
  2. XpsGradientStop Listesini Başlat
  3. Geometriyi tanımlayarak yeni bir yol oluşturun
  4. Ortaya çıkan XPS belgesini kaydet

Aşağıdaki kod, C++ kullanılarak bir XPS dosyasına dikey degradenin nasıl ekleneceğini gösteren bu adımlara dayanmaktadır:

// Yeni XPS Belgesi oluştur
auto doc = System::MakeObject<XpsDocument>();

// XpsGradientStop Listesini Başlat
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));

// Geometriyi kısaltma biçiminde tanımlayarak yeni yol oluşturun
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);

// Ortaya çıkan XPS belgesini kaydet
doc->Save(RunExamples::outDir() + u"AddVerticalGradient_out.xps");

C++ kullanarak XPS’de Yatay Degrade Ekleme

XPS dosyalarındaki başka bir olası degrade varyasyonu, yatay degradedir. Yatay gradyan ekleme yaklaşımı, yukarıda tartıştığımız kullanım durumuyla biraz ilişkilidir. Yatay degrade eklemek için izlemeniz gereken adımlar şunlardır:

  1. Yeni XPS Belgesi oluştur
  2. XpsGradientStop kullanarak degrade duraklarını belirtin
  3. Geometri ile yol oluştur
  4. Çıkış XPS belgesini kaydet

Aşağıdaki kod parçacığı, C++ kullanarak XPS dosyalarına yatay degradenin nasıl ekleneceğini açıklar:

// Yeni XPS Belgesi oluştur
auto doc = System::MakeObject<XpsDocument>();

// XpsGradientStop Listesini Başlat
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));

// Geometriyi kısaltma biçiminde tanımlayarak yeni yol oluşturun
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);

// Ortaya çıkan XPS belgesini kaydet
doc->Save(RunExamples::outDir() + u"AddHorizontalGradient_out.xps");

Izgarayı C++ ile XPS dosyasına yerleştirin

Aspose.Page for C++ API, işlemeyi kontrol etmek için birçok özellikle XPS dosyalarında ızgaralar oluşturmanıza olanak tanır. C++ tabanlı uygulamalarınızda XPS dosyasına ızgara ekleme örneğini ele alalım. Aşağıdaki adımları göz önünde bulundurarak bu özellikle çalışabilirsiniz:

  1. XpsDocument sınıf nesnesini başlat
  2. Izgara için Geometri belirtin VisualBrush
  3. Macenta ızgara VisualBrush için Tuval oluşturun
  4. Görsel fırça oluşturun ve ızgara ekleyin
  5. Çıktı XPS dosyasını kaydet

Aşağıdaki kod, C++ kullanılarak XPS dosyalarına ızgaranın nasıl ekleneceğini açıklayan şu adımlara dayanmaktadır:

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

// Macenta ızgara için geometri 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));

// Macenta ızgara VisualBrush için tuval
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);

//Görsel Fırça Oluşturun, bazı XPS parçalarıyla belirtilir (vektör grafikleri ve glifler)
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);

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

// Izgara ekle
canvas->AddPath(gridPath);

// Orta üstte kırmızı şeffaf dikdörtgen
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);

// Ortaya çıkan XPS belgesini kaydet
doc->Save(RunExamples::outDir() + u"AddGrid_out.xps");

C++ kullanarak XPS dosyasına Saydam Nesne ekleyin

XPS dosyalarıyla çalışmanın bir başka heyecan verici özelliği de şeffaflık ve opaklık desteğidir. Farklı senaryolar altında XPS dosyasına saydam nesneler eklemeniz gerekebilir. Bu, aşağıdaki adımların yardımıyla elde edilebilir:

  1. Yeni XPS Belgesi oluştur
  2. Kapalı dikdörtgen geometrili yol oluştur
  3. Farklı yollar için geometri ekleyin
  4. Çıkış XPS belgesini kaydet

Bu adımları, C++ programlama dili ile XPS dosyasına nasıl şeffaf nesne ekleneceğini gösteren aşağıdaki kod takip eder:

// Yeni XPS Belgesi oluştur
auto doc = System::MakeObject<XpsDocument>();

// Sadece şeffaflığı göstermek için
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()));

// Kapalı dikdörtgen geometrili yol oluştur
System::SharedPtr<XpsPath> path1 = doc->CreatePath(doc->CreatePathGeometry(u"M20,20 h200 v200 h-200 z"));
// Yol1'i doldurmak için mavi düz fırçayı ayarla
path1->set_Fill(doc->CreateSolidColorBrush(System::Drawing::Color::get_Blue()));
// Geçerli sayfaya ekle
System::SharedPtr<XpsPath> path2 = doc->Add(path1);

// yol1 ve yol2, yol1 başka herhangi bir öğenin içine yerleştirilmedikçe aynıdır.
// (bu, yol1'in üst öğesinin olmadığı anlamına gelir).
// Bu dikdörtgenin sayfadaki rengi etkin bir şekilde yeşile dönüştüğü için
path2->set_Fill(doc->CreateSolidColorBrush(System::Drawing::Color::get_Green()));

// Şimdi path2'yi bir kez daha ekleyin. Şimdi path2'nin ebeveyni var. Yani yol3, yol2 ile aynı olmayacak.
// Böylece sayfada yeni bir dikdörtgen çizilir...
System::SharedPtr<XpsPath> path3 = doc->Add(path2);
// ... ve onu 300 birim aşağı kaydırıyoruz ...
path3->set_RenderTransform(doc->CreateMatrix(1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 300.0f));
// ... ve doldurmak için kırmızı düz fırçayı ayarlayın
path3->set_Fill(doc->CreateSolidColorBrush(System::Drawing::Color::get_Red()));

// path2'nin geometrisiyle yeni path4 oluşturun ...
System::SharedPtr<XpsPath> path4 = doc->AddPath(path2->get_Data());
// ... 300 birim sağa kaydır ...
path4->set_RenderTransform(doc->CreateMatrix(1.0f, 0.0f, 0.0f, 1.0f, 300.0f, 0.0f));
// ... ve mavi katı dolguyu ayarla
path4->set_Fill(doc->CreateSolidColorBrush(System::Drawing::Color::get_Blue()));

// path4'ü bir kez daha ekleyin.
System::SharedPtr<XpsPath> path5 = doc->Add(path4);
// path4 ve path5 tekrar aynı değil ...
// (path5'i 300 birim aşağı taşı)
path5->set_RenderTransform(path5->get_RenderTransform()->Clone());
// RenderTransform değerinin path4 ile bağlantısını kesmek için (Fill özelliği hakkındaki sonraki yoruma bakın)
path5->get_RenderTransform()->Translate(0.0f, 300.0f);
// ... ancak Fill özelliğinin opaklığını ayarlarsak, hem path5 hem de path4 üzerinde etkili olur
// çünkü brush, path5 ve path4 için aynı kalan karmaşık bir özellik değeridir.
path5->get_Fill()->set_Opacity(0.8f);

// path2'nin geometrisiyle yeni path6 oluşturun ...
System::SharedPtr<XpsPath> path6 = doc->AddPath(path2->get_Data());
// ... 600 birim sağa kaydır ...
path6->set_RenderTransform(doc->CreateMatrix(1.0f, 0.0f, 0.0f, 1.0f, 600.0f, 0.0f));
// ... ve sarı katı dolguyu ayarlayın
path6->set_Fill(doc->CreateSolidColorBrush(System::Drawing::Color::get_Yellow()));

// Şimdi path6'nın klonunu ekleyin ...
System::SharedPtr<XpsPath> path7 = doc->Add(path6->Clone());
// (path5'i 300 birim aşağı taşı)
path7->set_RenderTransform(path7->get_RenderTransform()->Clone());
path7->get_RenderTransform()->Translate(0.0f, 300.0f);
// ... ve path7 için opaklığı ayarlayın
path7->get_Fill()->set_Opacity(0.8f);
// Artık opaklık, özellik değerleri öğeyle birlikte klonlandığında bağımsız olarak etki eder.

// Aşağıdaki kod bloğu bir öncekine eşdeğerdir.
// path6'nın kendisini ekleyin. path6 ve path7 aynı değildir. Fill özellik değerleri aynı olmasına rağmen 
//XpsPath yol7 = doc.Add(yol6);
//path7.RenderTransform = path7.RenderTransform.Clone();
//path7.RenderTransform.Translate(0, 300);
// Path7'nin Fill özelliğinin path6'nın Fill özelliğinden "bağlantısını kesmek" için onu klonuna (veya path6'nın Fill klonuna) yeniden atayın
//path7.Fill = ((XpsSolidColorBrush)path7.Fill).Clone();
//path7.Fill.Opacity = 0.8f;

// Ortaya çıkan XPS belgesini kaydet
doc->Save(RunExamples::outDir() + u"WorkingWithTransparency_out.xps");

Çözüm

Özetle, XPS dosyalarıyla çalışmak için bir dizi özelliği araştırdık. XPS dosyalarına degrade, doğrusal, yatay veya dikey, ayrıca ızgaralar veya şeffaf nesneler ekleyebilirsiniz. Ayrıca, Örnek projeyi indirerek diğer bazı özelliklere göz atabilirsiniz. Herhangi bir belirsizlik durumunda, lütfen Ücretsiz Destek Forumları üzerinden bize yazmaktan çekinmeyin. Size rehberlik etmekten onur duyacağız!

Ayrıca bakınız