تمام سوالات سوالات بدون پاسخ سوال بپرسید

سلام ، آیا امکانش هست که در wpf یک مسیری رسم کرد و با ایجاد یک انیمشن کاری کرد که آبجکت مورد نظر (مثلا یک Rectangle) این مسیر را طی کند؟

1 پاسخ

بله خوشبختانه امکانش فراهم است. می توانید از MatrixAnimationUsingPath برای این منظور استفاده کنید. در زیر یک مثال ساده رو میتوانید ببینید:

<Button MinWidth="100" Content="A Button">
  <Button.RenderTransform>
    <MatrixTransform x:Name="ButtonMatrixTransform">
      <MatrixTransform.Matrix >
        <Matrix />
      </MatrixTransform.Matrix>
    </MatrixTransform>
  </Button.RenderTransform>
  <Button.Triggers>
    <EventTrigger RoutedEvent="Button.Loaded">
      <BeginStoryboard>
        <Storyboard>
          <MatrixAnimationUsingPath
          Storyboard.TargetName="ButtonMatrixTransform"
          Storyboard.TargetProperty="Matrix"
          DoesRotateWithTangent="True"
          Duration="0:0:5" 
          RepeatBehavior="Forever" >
            <MatrixAnimationUsingPath.PathGeometry>
              <PathGeometry 
                Figures="M 10,100 C 35,0 135,0 160,100 180,190 285,200 310,100" 
                PresentationOptions:Freeze="True" />
            </MatrixAnimationUsingPath.PathGeometry>
          </MatrixAnimationUsingPath>
        </Storyboard>
      </BeginStoryboard>
    </EventTrigger>
  </Button.Triggers>
</Button>

به قسمت Storyboard توجه کنید؛ از یک کلاس به نام MatrixAnimationUsingPath استفاده شده است که در خصوصیت PathGeometry شکل مورد نظر (مسیر مورد نظر) خود را می توانید بدهید.
حالا XAML برای اجرای انیمیشن از مسیر شما استفاده می کند. این روش برای انیمیشن های خیلی پیچیده بسیار کاربرد دارد.
بروز رسانی:
اگر دقت کرده باشید یک خصوصیت به نام PresentationOptions:Freeze="True" در کدها می بینید؛ این خصوصیت در صورتی وجود دارد که از فضای نام mc:Ignorable="PresentationOptions" استفاده کنید. البته این خصوصیت در هر Container ای که تنظیم شود، باعث می شود خاصیت IsFrozen فرزندان برابر true شود.
با اینکار به WPF می گویید که شکلتان تغییر نخواهد کرد. به این ترتیب کارایی برنامه بالا می رود.

منبع

موفق باشید

ممنون از جوابی که دادین ، بدون PresentationOptions:Freeze="True" جواب داد ، همچین گزینه ای توی خصوصیات PathGeometry نیست.

(07 مارس '12, 08:24) XhamidX

حق با شماست، من پستم رو بروز رسانی کردم

(07 مارس '12, 09:23) _Ant Eater_

مرسی ،جواب داد . حالا انجام این کار با Blend : روی Path که دارید کلیک راست کنید از زیرمنوی Path، گزینه Convert To Motion Path رو بزنید. بعد در پنجره باز شده، شی خود را انتخاب کنید. حالا Blend خودش یک انیمیشن درست میکنه و شی رو به ابتدای مسیر میبره.

(08 مارس '12, 06:10) XhamidX
toggle preview



آموزش زبان برنامه نویسی C#
آموزش jquery
آموزش برنامه نویسی
آموزش طراحی وبسایت
آموزش مدیریت وبسایت
آموزش جاوا Java
آموزش پایتون Python
آموزش سی شارپ C#‎
آموزش HTML و CSS
آموزش JavaScript جاوااسکریپت
آموزش jQuery جی کوئری
آموزش ساخت ربات تلگرام
آموزش برنامه‌نویسی PHP
آموزش برنامه‌نویسی اندروید
● آموزش‌های رایگان

سوالات مرتبط

راهنمای استفاده از ویرایشگر
  • *ایتالیک*‌ یا __ایتالیک__
  • **ضخیم** یا __ضخیم__
  • آدرس:[متن](http://url.com/ "عنوان")
  • عکس?![alt متن](/path/img.jpg "عنوان")
  • لیست عددی: 1. Foo 2. Bar
  • برای رفتن به خط بعد، هر جا مایلید که خط جدید شروع شود دو کاراکتر فاصله (space) قرار دهید
  • تگ‌های ساده HTML هم پشتیبانی می‌شوند

تگها:
  • ×137
  • ×40
  • ×35
  • پرسیده شده: 06 مارس '12, 09:13
  • بازدید: 2,267 بار
  • آخرین بروزرسانی: 10 مارس '12, 23:01

این سوال را دنبال کنیدتوسط ایمیل: ایمیل شما (باید معتبر باشد, هرگز به دیگران نمایش داده نمیشود):

هنگامی که شما به سیستم وارد شوید،قادر خواهید بود برای بروز رسانی ها مشترک شوید.


توسط RSS:

پاسخها

پاسخها و نظرها