הוסף גרדיאנט גריד שקיפות XPS

ניתן להשתמש בקובצי XPS להצגת מידע חזותי רב. הם תומכים בטקסט, תמונות, שקיפות אובייקטים, רשתות, מעברי צבע ותכונות רבות אחרות. אתה יכול להוסיף גרדיאנט, רשת ואובייקטים שקופים בקבצי XPS לפי הדרישות שלך. במאמר זה, נבדוק את התכונות הללו בפירוט, יחד עם דוגמאות ומקרי שימוש שונים. הבה נעבור על הנושאים הבאים:

התקנת XPS API עבור C++

אתה יכול להגדיר במהירות ובקלות את ה-API של Aspose.Page for C++ ביישומי התכנות שלך למניפולציה של XPS, PS, EPS ופורמטי קבצים נתמכים אחרים. כל שעליך לעשות הוא להוריד את קובץ ה-DLL מהרשימה הורדות, או להתקין אותו מגלריית NuGet עם הפקודה למטה:

PM> Install-Package Aspose.Page.Cpp 

הוספת Gradient בקובץ XPS באמצעות C++

לפעמים אתה צריך להוסיף שיפוע בקבצי XPS. אתה יכול לתפעל את קובץ XPS מכיוון שה-API מאפשר לך להוסיף שיפוע ליניארי, אופקי כמו גם אנכי. הבה נוסיף את ההדרגות הבאות בקובץ XPS:

הוסף Gradient אנכי בקובץ XPS עם C++

אתה יכול בקלות להוסיף שיפוע אנכי בקבצי XPS עם כמה קריאות API פשוטות. להלן השלבים להוספת השיפוע האנכי:

  1. צור XPS Document חדש
  2. אתחול רשימה של XpsGradientStop
  3. צור נתיב חדש על ידי הגדרת הגיאומטריה
  4. שמור מסמך XPS שנוצר

הקוד שלהלן מבוסס על השלבים הבאים, המדגים כיצד להוסיף שיפוע אנכי בקובץ XPS באמצעות C++:

// צור מסמך 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");

הוסף מעבר אופקי ב-XPS באמצעות C++

וריאציה אפשרית נוספת של שיפוע בקבצי XPS היא השיפוע האופקי. הגישה של הוספת שיפוע אופקי קשורה מעט למקרה השימוש שדיברנו עליו לעיל. להלן השלבים שעליך לבצע עבור הוספת שיפוע אופקי:

  1. צור מסמך XPS חדש
  2. ציין עצירות שיפוע באמצעות XpsGradientStop
  3. צור נתיב עם גיאומטריה
  4. שמור מסמך XPS פלט

קטע הקוד הבא מפרט כיצד להוסיף שיפוע אופקי בקבצי XPS באמצעות C++:

// צור מסמך 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");

הכנס רשת בקובץ XPS עם C++

Aspose.Page for C++ API מאפשר לך לרנדר רשתות בקבצי XPS עם הרבה מאפיינים לשלוט בעיבוד. הבה נבחן את הדוגמה של הוספת רשת בקובץ XPS ביישומים מבוססי C++ שלך. אתה יכול לעבוד עם תכונה זו על ידי בחינת השלבים הבאים:

  1. אתחול אובייקט המחלקה XpsDocument
  2. ציין גיאומטריה עבור הרשת VisualBrush
  3. צור Canvas עבור רשת מגנטה VisualBrush
  4. צור מברשת ויזואלית והוסף רשת
  5. שמור קובץ XPS פלט

הקוד שלהלן מבוסס על השלבים הבאים המסביר כיצד להוסיף רשת בקבצי XPS באמצעות C++:

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);

//צור מברשת חזותית, זה מצוין על ידי קטע 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");

הכנס אובייקט שקוף לקובץ XPS באמצעות C++

תכונה מרגשת נוספת לעבודה עם קבצי XPS היא התמיכה בשקיפות ובאטימות. ייתכן שיהיה עליך להוסיף אובייקטים שקופים בקובץ XPS בתרחישים שונים. ניתן להשיג זאת בעזרת השלבים הבאים:

  1. צור XPS Document חדש
  2. צור נתיב עם גיאומטריית מלבן סגור
  3. הוסף גיאומטריה עבור נתיבים שונים
  4. שמור מסמך XPS פלט

שלבים אלה מלווה בקוד הבא, המדגים כיצד להוסיף אובייקט שקוף בקובץ XPS עם שפת תכנות C++:

// צור מסמך 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 ו-path2 זהים ברגע שנתיב1 לא הוצב בתוך אף אלמנט אחר
// (מה שאומר שלנתיב1 לא היה אלמנט אב).
// בגלל זה הצבע של המלבן בדף הופך למעשה לירוק
path2->set_Fill(doc->CreateSolidColorBrush(System::Drawing::Color::get_Green()));

// כעת הוסף שוב את path2. עכשיו לנתיב 2 יש אב. אז נתיב3 לא יהיה זהה לנתיב2.
// כך נצבע מלבן חדש על הדף...
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()));

// צור נתיב4 חדש עם הגיאומטריה של נתיב2...
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()));

// הוסף נתיב 4 שוב.
System::SharedPtr<XpsPath> path5 = doc->Add(path4);
// נתיב 4 ונתיב 5 אינם זהים שוב ...
// (הזיז את נתיב5 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);

// צור נתיב6 חדש עם הגיאומטריה של נתיב2...
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());
// (הזיז את נתיב5 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 path7 = doc.Add(path6);
//path7.RenderTransform = path7.RenderTransform.Clone();
//path7.RenderTransform.Translate(0, 300);
// כדי "לנתק" את מאפיין ה-Fill של path7 מהמאפיין Fill של path6 להקצות אותו מחדש לשבט שלו (או לשבט ה-Fill של path6)
//path7.Fill = ((XpsSolidColorBrush)path7.Fill).Clone();
//path7.Fill.Opacity = 0.8f;

// שמור מסמך XPS שנוצר
doc->Save(RunExamples::outDir() + u"WorkingWithTransparency_out.xps");

סיכום

בקצרה, חקרנו מספר תכונות לעבודה עם קבצי XPS. ניתן להוסיף שיפוע, ליניארי, אופקי או אנכי, כמו גם רשתות או אובייקטים שקופים בקובצי XPS. יתר על כן, אתה יכול להסתכל על כמה תכונות אחרות על ידי הורדת פרויקט דוגמאות. בכל מקרה של אי בהירות, אנא אל תהסס לכתוב לנו בפורומי תמיכה בחינם. נהיה לכבוד להדריך אותך!

ראה גם