Dec 3, 2013

WPF-3 (ტრანსფორმაცია)

ეს ნაწილი დაეთმობა WPF ში ფიგურების ტრანსფორმაციასა და მისი ძირითადი სახეების განხილვას. იმის გათვალისწინებით, რომ WPF ს გააჩნია ვექტორზე დაფუძნებული გრაფიკა შესაძლებელია ყველა ელემენტის ზომის შეცვლა. ვექტორზე დაფუძნებული გრაფიკული ერთეულები ახლა არის გაზომვადი, მობრუნებადი და გადახრადი. მაუსის შეხებისას კი ნებისმიერი კოორდინატის კალკულაციის გარეშე შესაძლებელია რაიმე მოვლენის დარეგისტრირება და შესრულება. ელემენტის გასადიდებლად საჭიროა უბრალოდ შედეგი XAML ის შესრულება



<Canvas.LayoutTransform>
<ScaleTransform ScaleX="1.5" ScaleY="1.5" />
</Canvas.LayoutTransform>

მობრუნებაც ისევე მარტივია, როგორ სკალირება, RotationTransform ის გამოყენებით, რომელსაც გააჩნია Angle თვისება, მისი მნიშვნელობის მინიჭებით ელემენტი ბრუნდება იმ კუთხით, რომელიც მითითებულია ამ თვისებაზე:

<Canvas.LayoutTransform>
<RotateTransform Angle="30" />
</Canvas.LayoutTransform>

გადახრისთვის უნდა გამოიყენოთ skewTransform ელემენტი. გადახრისთვის საჭიროა X და Y ის მიმართულებებით კუთხის დანიშვნა. X, Y განიხილება, როგორც დეკარტის სტანდარტული კოორდინატების სისტემის ღერძები.
<Canvas.LayoutTransform>
<SkewTransform AngleX="20" AngleY="25" />
</Canvas.LayoutTransform>
ასე ცალ-ცალკე, რომ არ მოგვიწიოს თითოეული ოპერაციის ჩატარება, შესაძლებელია განვსაზღვროთ TransformGroup, რომლის საშუალებითაც მოხდება RotateTransform ისა და SkewTransform ის გამოყენება ერთდროულად ერთიდაიმავე ელემენტზე.
გარდა TransformGroup ისა შეგიძლიათ ისარგებლოთ MatrixTransform ითაც, სადაც Matrix ელემენტს გააჩნია თვისებები M11 და M22 გაწელვისთვის და M12 და M21 გადახრისთვის.

<Canvas.LayoutTransform>
<MatrixTransform>
<MatrixTransform.Matrix>
<Matrix M11="0.8" M22="1.6" M12="1.3" M21="0.4" />
</MatrixTransform.Matrix>
</MatrixTransform>
</Canvas.LayoutTransform>

რა თქმა უნდა კარგი იქნება თუ ამ ყველაფრის დემონსტრაციას მოვახდენთ XAML + ილუსტრაციებით, ამიტომ ქვემოთ მოცემულია ეს ყველაფერი:








იმის გათვალისწინებით, რომ ყველაფერს ქვემოთ მოცემული აქვს შესაბამისი XAML კოდი, ჩემი აზრით არ არის დამატებითი ახსნა საჭირო, ხოლო რაც შეეხება SkewTransform ს გაკეთებულია ჯერ X შემდეგ Y  და შემდეგ XY თვისებების გამოყენებით, რითაც უფრო კარგად დაინახავთ ამ ოპერაციას და მის სიმძლავრეს. 

No comments:

Post a Comment