Dec 2, 2013

WPF - 2 (გეომეტრია)


ამ კლასის შესახებ წინა სექციაშიც ვისაუბრეთ და ის შეიძლება გამოყენებულ იქნას არა მარტო Path ელემენტთან, არამედ DrawingBrush თანაც კი.
Shape და Geometry ელემენტები საკმაოდ ჰგვანან ერთმანეთს. მაგალითად Shape ებში არის Line, Ellipse და Rectangle. ხოლო Geometry ში შეგვიძლია ვნახოთ LineGeometry, EllipseGeometry და RectangleGeometry. ერთის მხრივ ეს მსგავსება კარგია, მაგრამ არ უნდა იყოს დამაბნეველი,
რადგან რაღაც დონის შემდეგ მსგავსება ძალიან დიდ განსხვავებად იქცევა. ძირითადად ფორმები (Shapes) არის FrameworkElement ები, რომლიც თავის მხრივ არის UIElement ის მემკვიდრე. ფორმები მონაწილეობენ დიზაინის სისტემაში და მათ შეუძლიათ თავიანთი თავის დარენდერება. ხოლო Geometry კლასს არ შეუძლია თვით დარენდერება და ასევე მათ უფრო ნაკლები თვისებები აქვთ ვიდრე ზომების კლასს. Geometry კლასის წინაპარია Freezable კლასი.

Path კლასი იყენებს Geometry ის თავისი თავის დასახატად. ასევე Geometry ის ობიექტი შეიძლება დაენიშნოს Path კლასის Data თვისებას. მარტივი გეომეტრიული ელემენტები, რომლის გამოყენებაც არის შესაძლებელი შეიძლება იყვნენ EllispseGeometry, LineGeometry, RectangleGeometry, რომლებიც ენიშნებიან შესაბამისად ელიფსს, ხაზსა და ოთხკუთხედს.

რთული, ანუ რამდენიმე გეომეტრიის შერევის საშუალებას გვაძლევს CombinedGeomery კლასი, რომელსაც გააჩნია თვისება Geometry1 და Geometry2, რის შემდეგაც ხდება მათი შერევა GeometryCombineMode ის საშუალებით, რომელიც გაერთიანებაში იღებს რამდენიმე მნიშვნელობას: Union, Intersect, Xor, Exclude. პირველი თვისება ორ გეომეტრიულ ფიგურას ერთმანეთში სვავს - აერთებს. Intersect ის საშუალებით შესაძლებელია მხოლოდ იმ ფართობის გამოჩენა, რომელიც ჩანს ორივე გეომეტრიული ფიგურის ფართობის გადაფარვით. Xor მოქმედებს, როგორც Intersect იმ განსხვავებით, მაგრამ იმ განსხვავებით, რომ ნაჩვენებ ფართობში არ ჩანს ის ნაწილი, სადაც ორივე ფიგურა ერთმანეთზე არის გადადებული. Exclude კი აჩვენებს პირველი ფიგურის ფართობს გამოკლებული მეორე ფიგურის ფართობი, თავისი გადაფარვით. ამ ყველაფრის სადემონსტრაციოდ შემოგთავაზებს XAML კოდის მიხედვით რეგენერირებულ ფიგურებს.
Exclude ის გამოყენება



Intersect ის გამოყენება
Union ის გამოყენება

Xor ის გამოყენება


No comments:

Post a Comment