نظرة عامة على التحويلات

يصف هذا الموضوع كيفية استخدام 2-DTransform فصول للتدوير ، الحجم ، ونقل (ترجمة) وتحرف كائناتFrameworkElement.

يشتمل هذا الموضوع على الأقسام التالية.

  • ما هي محتويات التحويل
  • تحويل الفئات
  • الخصائص المشتركة للتحول
  • التحولات وتنسيق النظم
  • تحويل عنصر الإطار
  • مثال: تدوير 45 عنصرا إطار الدرجات
  • تحويلات الحركة.
  • ميزات القابل للتجميد
  • موضوعات ذات صلة

ما هي محتويات التحويل

Transform يحدد كيفية الخريطة ، أو التحويل ، واحدة من نقاط تنسيق الفضاء إلى آخر تنسيق الفضاء. يتم وصف هذا التعيين بواسطة تحويل Matrix ، وهو مجموعة من ثلاثة صفوف مع ثلاثة أعمدة من Double القيم.

ملاحظةملاحظة

Windows Presentation Foundation (WPF)تستخدم المصفوفات الرئيسية بالصف.كما يتم التعبير عن المتجهات المتجهات في الصف ، وليس ناقلات العمود.

يوضح الجدول التالي بنيه WPFرمز المصفوفة.

وتحول اتجاهين المصفوفة

M11

الافتراضية: 1.0

M12

الافتراضية: 0.0

0.0

M21

الافتراضية: 0.0

M22

الافتراضية: 1.0

0.0

OffsetX

الافتراضية: 0.0

OffsetY

الافتراضية: 0.0

1.0

عن طريق التلاعب فى مصفوفة القيم ، يمكنك تدوير ، الحجم ، والانحراف ، والانتقال (ترجمة) كائن. على سبيل المثال، إذا قمت بتغيير القيمة في العمود الأول من الصف الثالث ( OffsetX قيمة) صواب 100، يمكنك استخدام لنقل كائن 100 وحدة على طول المحور س. إذا قمت بتغيير القيمة في العمود الثاني من الصف الثاني إلى 3 ، يمكنك استخدامها لكائن تمتد إلى ثلاثة أضعاف ارتفاعها الحالي. إذا قمت بتغيير كلاهما قيم، قم بنقل وحدات الكائن 100 بطول المحور س وتمدد لها الارتفاع بعامل 3. لأن Windows Presentation Foundation (WPF)فقط التحويلات affine اعتماد، والقيم الموجودة في العمود الأيسر دائماً 0، 0، 1.

على الرغم من أن Windows Presentation Foundation (WPF) تمكنك من التعامل مع مصفوفة القيم مباشرة ، كما يوفر العديد من Transform الفئات التي تمكنك لتحويل كائن دون ان تعرف كيف تم تكوين البنية الأساسية المصفوفة. على سبيل المثال، ScaleTransform فئة تمكنك من نطاق كائن من خلال تحديد ScaleX و ScaleY خصائص بدلا من التلاعب و تحول المصفوفة. كذلك، RotateTransform فئة تمكنك من تدوير كائن الإعداد لها فقط Angle الممتلكات.

تحويل الفئات

يوفر Windows Presentation Foundation (WPF) فئات 2-DTransform لعمليات التحويل الشائعة:

الفئة

الوصف

المثال

توضيح

RotateTransform

استدارة عنصر من المحدد Angle.

كيفية القيام بما يلي: ادارة أحد الكائنات

استدارة الشكل التوضيحي

ScaleTransform

المقاييس بواسطة المحدد ScaleX و ScaleY كميات.

كيفية القيام بما يلي: تغيير حجم عنصر

تحجيم الشكل التوضيحي

SkewTransform

المقاييس بواسطة المحدد AngleX و AngleY كميات.

كيفية القيام بما يلي: انحراف عنصر

انحراف الشكل التوضيحي

TranslateTransform

ينقل (يترجم) العنصر بواسطة المحدد X و Y كميات.

كيفية القيام بما يلي: ترجمة عنصر

ترجمة الشكل التوضيحي

لإنشاء تحويلات أكثر تعقيداً Windows Presentation Foundation (WPF) ينص على ما يلي فئتين

الفئة

الوصف

المثال

TransformGroup

مجموعات متعددة TransformGroup الكائنات إلى واحدة متعددة Transform التي يمكنك تطبيقها ثم تحويل الممتلكات.

كيفية القيام بما يلي: تطبيق تحويلات متعددة لأحد كائنات

MatrixTransform

يقوم بإنشاء تحويلات المخصصة التي لم يتم توفيرها من قبل الآخرين Transform الفئات. عند استخدام MatrixTransform ، تقوم بمعالجة مصفوفة مباشرة.

كيفية القيام بما يلي: استخدام MatrixTransform لإنشاء تحويلات مخصصة

Windows Presentation Foundation (WPF) يوفر أيضاً3-D تحويلات. لمزيد من المعلومات، راجع فئة Transform3D.

الخصائص المشتركة للتحول

طريقة واحدة لتحويل كائن هو أن تعلن المناسبة Transform نوع وتطبيقه على خاصية تحويل الكائن. أنواع مختلفة من الكائنات وأنواع مختلفة من خصائص التحول. يسرد الجدول التالي استخدامات عدة Windows Presentation Foundation (WPF)و أنواعها وخصائص تحولها.

Type

خصائص التحويل

Brush

Transform, RelativeTransform

ContainerVisual

Transform

DrawingGroup

Transform

FrameworkElement

RenderTransform, LayoutTransform

Geometry

Transform

TextEffect

Transform

UIElement

RenderTransform

التحولات وتنسيق النظم

عند تحويل كائن ما ، لا مجرد تحويل الكائن ، يمكنك تحويل تنسيق الفضاء الذي يوجد به هذا الكائن. افتراضيا ، يتم تحويل المركز في الأصل من الهدف الكائن لتنسيق النظام : (0,0). الاستثناء الوحيد هو TranslateTransform; TranslateTransform لا يوجد لديه خصائص لتعيين مركز لأثر الترجمة هو نفسه بغض النظر عن المكان الذي يتركز عليه.

يستخدم المثال التالي RotateTransform لتدوير Rectangle العنصر وهو نوع من FrameworkElement ، بزاوية 45 درجة حول مركزه الافتراضي (0، 0). يبين الرسم التوضيحي التالي تأثير الاستدارة.

وثمة عنصر مستطيل استدارة 45 درجة عن النقطة (0،0)

FrameworkElement مدار 45 درجة حول (0،0)

<Canvas Width="200" Height="200">
  <Rectangle 
    Canvas.Left="100" Canvas.Top="100"
    Width="50" Height="50" 
    Fill="RoyalBlue" Opacity="1.0">
    <Rectangle.RenderTransform>
      <RotateTransform Angle="45" />
    </Rectangle.RenderTransform>
  </Rectangle>
</Canvas>

بشكل افتراضي، استدارة العنصر حول الزاوية العلوية اليمنى (0، 0). RotateTransform ، ScaleTransform ، و SkewTransform توفر فئات الخصائص CenterX CenterY التي تمكنك من تحديد نقطة تطبيق التحويل.

يستخدم المثال التالي أيضاً RotateTransform لاستدارة Rectangle عنصر بزاوية 45 درجة; ومع ذلك، هذا الوقت CenterX و CenterY تعيين خصائص بحيث RotateTransform يحتوي على وسط (25 ، 25). يبين الرسم التوضيحي التالي تأثير الاستدارة.

وثمة عنصر مستطيل استدارة 45 درجة عن النقطة (0،0)

هندسة الشكل المدار 45 درجة حول (25، 25)

<Canvas Width="200" Height="200">
  <Rectangle 
    Canvas.Left="100" Canvas.Top="100"
    Width="50" Height="50" 
    Fill="RoyalBlue" Opacity="1.0">
    <Rectangle.RenderTransform>
      <RotateTransform Angle="45" CenterX="25" CenterY="25" />
    </Rectangle.RenderTransform>
  </Rectangle>
</Canvas>

تحويل عنصر الإطار

لتطبيق التحولات إلى FrameworkElement ، إنشاء Transform وتطبيقه على واحدة من خصائص اثنين أن FrameworkElement توفر الفئة:

  • LayoutTransform – تحويل التي يتم تطبيقها قبل مرور التخطيط. بعد التحويل يتم تطبيقها ، ونظام تخطيط عمليات تحويل حجم وموضع العنصر.

  • RenderTransform – تحويل تعديل مظهر العنصر ولكن يتم تطبيقه بعد اكتمال مسار تخطيط. باستخدام RenderTransform بدلاً من LayoutTransform يمكنك الحصول على فوائد ألاداء.

أي منهما ينبغي عليك استخدامه؟ وبسبب مزايا الأداء التي توفرها استخدام RenderTransform كلما أمكن خاصة عند استخدام متحرك Transform الكائنات. استخدام LayoutTransform الخاصيه عند تحجيم تدوير, أو جانبيه و التي تحتاج الأصل للتكيف مع حجم تحول عنصر. لاحظ أنه عندما يتم استخدامها مع LayoutTransform الخاصية TranslateTransform تظهر الكائنات لجعل أي تأثير على عناصر. وذلك لأن نظام تخطيط إرجاع عنصر ترجم إلى موضعه الأصلي كجزء من المعالجة لها.

للحصول على معلومات إضافية حول التخطيط في Windows Presentation Foundation (WPF) راجع تخطيط النظام نظرة عامة حول.

مثال: تدوير 45 عنصرا إطار الدرجات

يستخدم المثال التالي RotateTransform لتدوير في اتجاه عقارب الساعة زر بنسبة 45 درجة. يحتوي الزر في StackPanel له اثنين من الأزرار الأخرى

افتراضياً، RotateTransform يدور حول النقطة (0، 0). لأن المثال لا يحدد مركز، يدور الزر حول النقطة (0, 0) التي هي الزاوية العلوية اليسرى. يتم تطبيق RotateTransform إلى الخاصية RenderTransform. يبين الرسم التوضيحي التالي نتيجة التحويل لها.

استدارة باتجاه عقارب الساعة 45 درجة ناحيه الزاوية العلوية اليمنى

زر محول باستخدام RenderTransform

<Border Margin="30" 
  HorizontalAlignment="Left" VerticalAlignment="Top"
  BorderBrush="Black" BorderThickness="1" >
  <StackPanel Orientation="Vertical">
    <Button Content="A Button" Opacity="1" />
    <Button Content="Rotated Button">
      <Button.RenderTransform>
        <RotateTransform Angle="45" />
      </Button.RenderTransform>
    </Button>
    <Button Content="A Button" Opacity="1" />
  </StackPanel>
</Border>

يستخدم المثال التالي أيضاً RotateTransform لتدوير زر 45 درجة باتجاه عقارب الساعة ولكنه أيضًا بتعيين RenderTransformOrigin من زر إلى (0.5 ، 0.5). القيمة RenderTransformOrigin خاصيه هو نسبة إلى حجم الزر. ونتيجة لذلك، يتم تطبيق الاستدارة إلى مركز الزر بدلاً من الركن الأيسر العلوي. يبين الرسم التوضيحي التالي نتيجة التحويل لها.

استدارة باتجاه عقارب الساعة 45 درجة حول الوسط

زر تم تحويله حول مركزه

<Border Margin="30"   
  HorizontalAlignment="Left" VerticalAlignment="Top"
  BorderBrush="Black" BorderThickness="1">
  <StackPanel Orientation="Vertical">
    <Button Content="A Button" Opacity="1" />
    <Button Content="Rotated Button"
      RenderTransformOrigin="0.5,0.5">
      <Button.RenderTransform>
        <RotateTransform Angle="45" />
      </Button.RenderTransform>
    </Button>
    <Button Content="A Button" Opacity="1" />
  </StackPanel>
</Border>

يستخدم المثال التالي LayoutTransform خاصيه بدلاً من RenderTransform خاصيه لتدوير الزر. يؤدي هذا التحويل يؤثر على التخطيط الزر ، الذي يُشغل مسار كامل بواسطة نظام تخطيط. نتيجة لذلك، زر استدارة ومن ثم إعادة تحديد موضعها بسبب تغيير حجمه. يبين الرسم التوضيحي التالي نتيجة التحويل لها.

تخطيط استخدام تحويل لتدوير زر.

زر محول باستخدام LayoutTransform

<Border Margin="30"   
 HorizontalAlignment="Left" VerticalAlignment="Top"
 BorderBrush="Black" BorderThickness="1">
  <StackPanel Orientation="Vertical">

    <Button Content="A Button" Opacity="1" />   
    <Button Content="Rotated Button">
      <Button.LayoutTransform>
        <RotateTransform Angle="45"  />
      </Button.LayoutTransform>
    </Button>   
    <Button Content="A Button" Opacity="1" />
  </StackPanel>
</Border>

تحويلات الحركة.

بسبب أن ترث من Animatable فئة Transform متحرك الفئات. لتحريك Transform ، يتم تطبيق رسوم نوع متوافق الخاصيه التي تريد تحريكها.

يستخدم المثال التالي على Storyboard و DoubleAnimation مع RotateTransform لجعل Button زيادة ونقصان في مكان عندما يتم النقر فوق.

<Page 
  xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
  Title="Button Animated RotateTransform Example"
  Background="White" Margin="50">
  <StackPanel>



    <Button Content="A Button"
      RenderTransformOrigin="0.5,0.5">
      <Button.RenderTransform>
        <RotateTransform x:Name="AnimatedRotateTransform" Angle="0" />
      </Button.RenderTransform>
      <Button.Triggers>
        <EventTrigger RoutedEvent="Button.Click">
          <BeginStoryboard>
            <Storyboard>
              <DoubleAnimation 
                Storyboard.TargetName="AnimatedRotateTransform"
                Storyboard.TargetProperty="Angle" 
                To="360" Duration="0:0:1" FillBehavior="Stop" />
            </Storyboard>
          </BeginStoryboard>
        </EventTrigger>
      </Button.Triggers>
    </Button>

  </StackPanel>
</Page>

للحصول على النموذج كامل، راجع نموذج2D Transforms. لمزيد من المعلومات حول الحركات، راجع نظرة عامة حول الحركة:

ميزات القابل للتجميد

بسبب أنه يرث من فئة Freezable ، فإن Transform توفر العديد من الميزات الخاصة: يمكن تعريف كائنات Transform كـ موارد ، تم مشاركتها بين عدة كائنات ، تم إجراءها للقراءة فقط لتحسين الأداء ، تم استنساخها وتم اجراءها كمؤشر الترابط - الآمن. للحصول على مزيد من المعلومات حول الميزات المختلفة المتوفرة من قبل كائنات Freezable ، راجع نظرة عامة حول الكائنات المجمدة.

راجع أيضًا:

المرجع

Transform

Matrix

موارد أخرى

مواضيع تحويلات How-to

نموذج التحويلات ثنائي الأبعاد