ეს ნაწილი დაეთმობა
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