0

>> Learning WPF Full <<

 
siryahya
siryahya
کاربر طلایی1
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 158652
محل سکونت : ▂▃▄▅▆▇█Tabriz█▇▆▅▄▃▂

>> Learning WPF Full <<
جمعه 25 اردیبهشت 1394  7:00 AM

« به نام خدا »

مقدماتی درباره WPF : 

WPF یک تکنولوژی جدید ساخت و اجرای اینترفیس در برنامه های جدید ویندوز است که اولین بار با .net فریم ورک 3.5 و در ویندوز ویستا ارائه شد. اما حالا با نسخه 4 خود و به کمک ویندوز 7، آمده تا بازی را عوض کند. همين حالا هم نرم افزار هايي نظير فایرفاکس 4، اینترنت اکسپلورر 9 و ... از WPF براي ساخت اينترفيس هایشان استفاده مي نمایند. پس اگر شما هم به عنوان یک "توسعه دهنده" یا یک "کاربر علاقه مند به دانستن مبانی تکنولوژی های مختلف"؛ دوست دارید که به طور کاملی با قابلیت ها و امکانات مختلف WPF آشنا شوید؛ این مطلب مناسب شماست. پس آن را از دست ندهید. البته قبل از شروع به خواندن مطلب، توصیه می کنیم که مطلب بررسی دایرکت ایکس 11 را مطالعه کنید. چرا که به درک هر چه بهتر شما از این مقاله کمک خواهد کرد. البته فراموش نکنید که این یک مقاله تخصصی است.


اگر چه ویندوز فرم یک ابزار بزرگ و پرقابلیت است، تغییرات ضروری ای را که باید در سیستم ارتباط با سخت افزار خود اعمال می کرد؛ اعمال نکرده است و به طور کلی می توان آن را ابزاری دانست که در طی ده سال گذشته، دستخوش تغییر اساسی خاصی نشده. ویندوز فرم برای ساختن یک ظاهر بصری و یا استفاده از عناصر استاندارد رابط کاربری ویندوز – مانند : Button , Textbox , Checkbox – به طور قابل ملاحظه ای، متکی به API های کلاسیک ویندوز است. همین مساله در عمل باعث می شود که سفارشی سازی به طور بسیار ناقصی در اجزای رابط کاربری اعمال گردد. به طور کلی ویندوز فرم نمی تواند قابلیت های ترسیمی مدرن و پیشرفته را در اختیار شما قرار دهد و به محض این که کمی آن را از نظر عناصر گرافیکی غنی کنید؛ آنچنان کند و سنگین می شود که از کارتان منصرف می گردید.


اما حالا WPF یا Windows Presentation Foundation آمده تا همه چیز را عوض کند. مدلی که WPF برای مدیریت منابع سیستم و اجزای رابط کاربری از آن تبعیت می کند؛ کاملا با ویندوز فرم متفاوت است. در همین حال WPF شامل کنترل های استانداردی است که در ویندوز فرم هم دیده می شدند. پس علاوه بر امکانات قبلی، توسعه دهندگان می توانند به قابلیت های ترسیمی کاملا مدرن با استفاده از دایرکت ایکس دست پیدا کنند و به طور کلی یک ظاهر کاملا مدرن را برای برنامه های خود بسازند. نکته دیگر این است که در WPF، زیبایی در عین سرعت به کار برده شده است.

پایه و اساس WPF، زیر بنا و ساختار قدرتمندی است که بر اساس DirectX ساخته شده. API های شتاب دهنده گرافیک سخت افزاری که در بازی های کامپپیوتری هم استفاده گسترده ای دارد. معنی اش آن است که شما می توانید از افکت های گرافیکی غنی ای استفاده کنید. بدون آن که نگران کاهش عملکرد و فشار آمدن زیاد به پردازنده شوید. چرا که تمام این افکت ها روی پردازنده گرافیکی پردازش می شوند و GPU ها هم به دلیل معماری موازی در ساختارشان؛ بسیار سریع تر از پردازنده ها به شمار می روند. این همان نقطه ضعف بزرگ ویندوز فرم در برابر WPF می باشد.

در واقع شما می توانید حتی از قابلیت های پیشرفته تری هم استفاده کنید. مانند پشتیبانی از فایل های ویدئویی و محتوای سه بعدی! با استفاده از این قابلیت ها (و یک ابزار خوب برای طراحی) قادر خواهید بود که رابط های کاربری و افکت های بصری بسیار چشم نوازی بسازید. در حالی که هیچ کدام از این کار ها برای ویندوز فرم ممکن نبود.



در این میان، ویدئو ها – انیمیشن ها و امکانات 3 بعدی، توجه بیشتری را در WPF می طلبند. این مهم است که در یاد داشته باشید که شما می توانید از WPF برای ساخت ویندوز اپلیکیشن های عادی با کنترل های استاندارد و افکت های پیش فرض استفاده کنید. در واقع استفاده از کنترل های متداول ویندوز، به همان سادگی ویندوز فرم است. حتی بهتر از این، باید بدانید که WPF برای برنامه های تجاری، سازگاری بیشتری نسبت به ویندوز فرم دارد. یک سری از کلاس های مختلف هم برای محتوای پرینت شده و مدیریت صف های پرینت به وجود آمده اند که بسیار بهتر از نمونه های مشابه در ویندوز فرم هستند. در نهایت هم به امکانات جدیدی می رسیم که در پرونده ها به کار گرفته می شود و به وسیله این امکانات می توانید مقدارهای بزرگی از متن های با فرمت های مختلف را نمایش دهید. برنامه های کاربردی مبتنی بر وب هم، در WPF فضای باز تری برای زندگی دارند. اپلیکیشن های صفحه ای می توانند به طور یک پارچه با Intenet Exploler هماهنگ شوند و یا از یک وب سایت به طور مستقیم اجرا شوند. همه این ها بدون هشدار های امنیتی متداول و آزار دهنده؛ و در عین حال با امنیت کامل اجرا خواهند شد! البته امکان اجرای آن ها روی نسخه های جدید فایر فاکس هم محیاست.


- مواد لازم برای استفاده از WPF

حالا باید به این سوال پاسخ دهیم که برای استفاده از WPF و همچنین توسعه دادن اپلیکیشن ها بر مبنای آن، به چه چیز هایی نیاز داریم؟ برای اجرای یک برنامه ی WPF، کامپیوتر شما باید مجهز به یکی از نسخه های ویندوز 7، ویستا یا XP Service Pack 2 باشد. همچنین به نسخه چهارم فریم ورک دات نت هم نیاز دارید. برای ساخت یک اپلیکیشن WPF 4 به نرم افزار Visual Studio 2010 نیاز دارید که .NET Framework 4 را هم داشته باشد.


یک گزینه دیگر برای شما این است که به جای استفاده از Visual Studio، از نرم افزار Expression Blend استفاده کنید که یک ابزار طراحی گرافیک محور می باشد. کاربرد این نرم افزار در ساخت و تست اپلیکیشن های WPF می باشد. به طور کلی، این نرم افزار برای طراحان گرافیکی ای در نظر گرفته شده که دوست دارند وقتشان را به درست کردن رابط های چشم نواز و جدی بگذرانند. اما ویژوال استودیو بیشتر برای برنامه نویس هایی مناسب است که می خواهد برنامه هایی با کد نویسی زیاد تولید کنند. این مقاله پیشفرض را بر این قرار داده که از ویژوال استودیو استفاده می نمایید. اما اگر دوست دارید که چیز های بیشتری در مورد Expression Blend یاد بگیرید، می توانید به عناوینی در همان زمینه که خوشبختانه کم هم نیستند؛ مراجعه فرمایید.


- سیر تکاملی گرافیک در ویندوز:

حالا وقت آن است که ببینیم: گرافیک و رابط کاربری ویندوز، از ابتدا تا به حال دستخوش چه تغییرات اساسی و مهمی شده است تا بتوانیم به قدرت واقعی WPF در زمینه پردازش گرافیکی پی ببریم.


بدون این که بدانیم، توسعه دهنده های ویندوز بیش از 15 سال بود که از یک تکنولوژی تقریبا ثابت برای برنامه های خود بهره می بردند، سخت است که بتوانیم از WPF قدر دانی کنیم. اپلیکیشن های استاندارد ویندوز، برای ساختن رابط کاربری خود متکی به دو قطعه ناقص و پیش پا افتاده از سیستم عامل ویندوز بودند. البته از 10 سال پیش تغییرات نسبتا خوبی در ویندوز فرم انجام شد، اما نمی توان آن ها را اساسی دانست.


• User32: این تکنولوژی همان ظاهر آشنای ویندوز را برای عناصری نظیر پنجره ها، دکمه ها، جعبه متن ها و... پدید می آورد. 

• GDI/GDI+: این تکنولوژی از قابلیت های ترسیم و رندر سازی: اجسام، متن ها و تصاویر و ... پشتیبانی می کرد. بهای استفاده از آن پیچیدگی زیاد و کارایی ضعیف در برنامه ها بود.


در طول چند سال، هر دوی این تکنولوژی ها تصفیه شدند و API هایی که توسعه دهنده ها از آن ها برای تعامل با کاربر استفاده می کردند؛ به طرز چشمگیری تغییر نمودند. اما هنوز هم وقتی با چهارچوب دات نت و ویندوز فرم یا Visual Basic 6 یا کد های C++ مبتنی بر MFC کار می کردید؛ در پشت صحنه همان بخش های مذکور از سیستم عامل به کار گرفته می شدند. فریم ورک های جدید تر، پوشش بهتری را برای تعامل با User 32 و GDI/GDI+ عرضه کردند. این فریم ورک ها توانستند عملکرد و اثر کار را بهبود ببخشند و پیچیدگی کار را کاهش دهند. قابلیت های نمایش پیش از رندر (یا پیش از کامپایل) برنامه ها بهبود یافت و برای بسیاری از کار ها دیگر نیازی به کد نویسی نبود. اما مشکل بزرگتری وجود داشت. این فریم ورک ها هیچ وقت نمی توانستند محدودیت های اساسی کامپوننت های سیستم را که بیش از یک دهه پیش طراحی شده بودند؛ از بین ببرند.


- دایرکت ایکس: موتور گرافیکی جدید

مایکروسافت یک راه دیگر برای از بین بردن محدودیت های User 32 و GDI/GDI+ ارائه داد و آن چیزی نبود جز Direct X. دایرکت ایکس در ابتدا تبدیل به یک ابزار برای ساخت بازی ها روی پلتفرم ویندوز گردید. اولین تعهد دایرکت ایکس، سرعت بالا بود و به همین دلیل مایکروسافت همکاری های نزدیکی را با سازندگان کارت های گرافیک ترتیب داد تا بتواند شتاب دهنده سخت افزاری لازم را برای دایرکت ایکس به ارمغان آورد. چراکه یک شتاب دهنده سخت افزاری برای پردازش بافت های پیچیده، جلوه های ویژه و گرافیک های سه بعدی لازم و حیاتی بود.


بعد از چند سال از اولین معرفی دایرکت ایکس( که کمی بعد از عرضه ویندوز 95 اتفاق افتاد)، دایرکت ایکس تبدیل به یک پلتفرم بزرگ و عمده شد و حالا این فناوری تبدیل به یک بخش بزرگ از ویندوز شده است که می تواند تمام کارت های گرافیک مدرن را پشتیبانی کند. با تمام این ها API برنامه نویسی برای دایرکت ایکس، بیشتر برای توسعه دهنده های بازی مناسب بودو نه نرم افزار ها. به همین دلیل دایرکت ایکس هیچ وقت در اینترفیس برنامه های عمده و قدیمی تجاری مورد استفاده قرار نگرفت. (به جز برنامه های سه بعدی خاصی مانند 3ds Max و ...)


WPF تمام این ها را تغییر می دهد. در WPF زیربنای تکنولوژی گرافیکی، GDI/GDI+ نیست. به جای آن دایرکت ایکس به کار گرفته شده است. شایان ذکر است که در اپلیکیشن های دبلیو.پی.اف، مهم نیست می خواهید چه نوع رابط کاربری ای را ایجاد نمایید. در هر حال شما با دایرکت ایکس کار خواهید کرد! پس چه به طراحی های پیچیده سه بعدی مشغول باشید و چه به اختصاصی کردن دکمه ها و عوض کردن رنگ متن و ...، تمام کار های ترسیمی به دایرکت ایکس محول خواهند شد. در عمل، حتی اپلیکیشن های جهانی و تجاری هم می توانند از جلوه های غنی مانند شفافیت یا فیلتر های AA (Anti Aliasing) استفاده نمایند و بهره مند شدن از شتاب دهنده ی سخت افزاری هم که جای خود را دارد! به طور ساده می توانیم بگوییم که دایرکت ایکس تا هرچقدر که بتواند، سعی می کند عملیات پردازشی را با واحد پردازش گرافیکی (GPU) هماهنگ نماید. این کار علاوه بر آزاد کردن پردازنده برای کار های محاسباتی بیشتر و بهره برداری بهتر از منابع سیستمی، عملکردی خارق العاده در گرافیک نسبت به GDI/GDI+ نصیب شما می کند. چرا که کارت های گرافیک بسیار بسیار قوی تر از پردازنده ها هستند. ( به گفته خود اینتل: حدودا 14 برابر)


خوب است بدانید که دایرکت ایکس موثر ترین ای.پی.آی در پردازش گرافیکی است. چرا که عناصر سطح بالایی مانند تکسچر ها و Gradient را در بر می گیرد و به طور مستقیم روی کارت گرافیک پردازششان می کند. در حالی که GDI از این کار عاجز است. به همین دلیل GDI باید آن ها را به دستور العمل های پیکسل به پیکسل تبدیل کند که در کارت گرافیک های مدرن به صورت بسیار کندی مورد پردازش و رندر سازی قرار می گیرند.


اما یکی از کامپوننت هایی که همچنان در صحنه حضور دارد و فعالیت می کند(البته به طور محدود) User 32 می باشد. WPF هنوز هم برای برخی از سرویس ها متکی به این کامپوننت می باشد. کار هایی مانند اداره و مسیر یابی ورودی ها و طبقه بندی مکان اپلیکیشن ها و پنجره ها، از مواردی هستند که بدون User 32 قابل انجام نمی باشند.


- شتاب دهی سخت افزاری و WPF:

شما حتما می دانید که کارت های گرافیک در ویژگی های تخصصی رندر سازی و بهینه سازی با هم تفاوت بسیاری دارند. اما خوشبختانه، این برای WPF مشکلی به حساب نمی آید. چرا که WPF تقریبا همه ی کار ها را با تکیه بر محاسبات نرم افزاری و رابط های برنامه کاربردی (APIs) انجام می دهد. به همین دلیل نیازی نیست که به پشتیبانی داخلی از کارت گرافیک تکیه نماید.

ترکی زبان قربون صدقه رفتنه داریم که: گوزلرین گیله‌سین قاداسین آلیم که یعنی درد و بلای مردمک چشات به جونم …!.

تشکرات از این پست
دسترسی سریع به انجمن ها