به طور کلی برنامه های ویندوزی از دو امکان، توابع User32 و GDI/GDI+ برای ترسیم عناصر گرافیکی استفاده میکنند. شرکت مایکروسافت به دلیل محدودیت هایی که در هر یک از دوبخش فوق، وجود داست، اقدام به ایجاد کتابخانه سطح بالایی به نام DirectX کرد. این ابزار با بهره گیری از توان کارت های گرافیکی با بهره بری بالا، حداکثر توان آن را برای ایجاد گرافیک های قوی به کار میبرد. اما به دلیل برقراری ارتباط مشکل با آن و نیاز به کد نویسی های زیاد، این ابزار بیشتر در تهیه بازی ها و برنامه های گرافیکی مورد استفاده قرار گرفت و جایگاه زیادی در توسعه برنامه های تجاری پیدا نکرد. تکنولوژی WPF یا Avalon یک زیر سیستم گرافیکی لحاظ شده در دات نت 3.0 به بالا است که باعث جداسازی ساختار UI از منطق Business Logic میگردد. معادل آن (زیر مجموعه ای از آن) در وب هم مورد استفاده قرار میگیرد با نامWPF/E )با نام رمز(SilverLight و تمامی این مشکلات را مرتفع کرده. WPF از تمامی قدرت DirectX جهت ایجاد گرافیک های 2 بعدی و 3 بعدی استفاده میکند. همچنین ابزار های بسیاری را جهت طراحی کردن در اختیار شما قرار میدهد.[saf]
کلید واژه – BAML ،Directx ،GDI ،WPF ،XAML
همزمان با ظهور نسخه 3.0 دات نت فریم ورک، تکنولوژی های جدیدی نیز به وجود آمد. این تکنولوژی ها، که بر خلاف تصور سطحی و ابتدایی بسیاری از برنامه نویسان درابتدای ظهور آن ها، صرفا اضافه شدن تعدادی دات نت اسمبلی به دات نت اسمبلی های قبلی، تلقی می شد، تغییرات بسیاری را در امر برنامه نویسی دات نت به وجود آورد. تکنولوژی WPF به همراه تکنولوژی های WCF و WWF با نسخه 3.0 دات نت فریم ورک توسط شرکت ماکروسافت معرفی شدند.در ادامه توضیح مختصری راجع به WCF و WWF خواهیم دید و سپس به بحث اصلی، یعنیWPF خواهیم پرداخت.
Windows Communication Foundation
تکنولوژی WCF که مخفف Windows Communication Foundation می باشد، ترکیب شده تکنولوژی های ارتباطی مختلفی که در دات نت فریم ورک 2.0 وجود داشت، می باشد. در دات نت فریم ورک 2.0 ، تکنولوژی های ارتباطی بین سیستم ها عبارت بودند از، ارتباطات بر پایه Soap ، ارتباطات دودویی بهینه شده و.... تکنولوژی WCF که با نام Indigo نیز شناخته می شود، تمامی جنبه های ارتباطی بین سیستم ها را درون خود دارد.
Windows Workflow Doundation
تکنولوژی WWF که مخفف Windows Workflow Foundation می باشد و بیشتر به صورت مخفف WF نشان داده می شود، امکان پیاده سازی و حل مسائل پیچیده دنیای پیرامون خود را که در حالت عادی ممکن است حل آن بسیار پیچییده و دشوار به نظر آید، به صورت بصری و بسیار ساده ارائه می کند. در کل دو شکل Sequential و State Machine را می توانید با WF پیاده سازی کنید. به عنوان نمونه بسیار ساده به راحتی می توانید یک دستور چند شرطی را به صورت کاملا انتزاعی و با امکاناتی که برای طراحی آن موجود است، پیاده سازی نمایید. به عنوان مثال شکل1-1نمونه پیاده سازی یک دستور چهار شرطی در سیستم WF از نوع Sequential می باشد.
تکنولوژی دیگری که همراه با دات نت فریم ورک 3.0 منتشر شد، Windows CardSpace بود که با نام info Card نیز معروف می باشد.
مشکلات تکنولوژیهای قبل در شخصیسازی ابزارها
پس از توضیح و اشارات مختصری درباره تکنولوژی های همپای تکنولوژی WPF که ارتباط بسیار نزدیکی نیز با هم دارند، اینک به معرفی تکنولوژی WPF خواهم پرداخت. WPF سر آغاز سه کلمه Windows Presentation Foundation می باشد. این تکنولوژی برای NET. طراحی شده است و همچنین تاثیر زیادی بر تکنولوژیهای نمایشی جدیدی مانند HTML و Flash داشته و باعث بهینه سازی سرعت سخت افزار میگردد. WPF شامل تغییرات بنیادینی در زمینه واسط گرافیکی ویندوز از زمان Windows95 میباشد.
هر کسی که تا به حال در محیط های گرافیکی و یا به اصلاح برنامه نویسان، محیط های ویژوال، برنامه نویسی کرده باشد، یقینا با مفاهیم Windows Application ها که گاها به صورت مخفف WinApp نیز نامیده می شوند، آشنا می باشد. این نوع برنامه نویسی همزمان با ورود سیستم عامل های ویندوز در دنیای کامپیوتر شروع شد و روز به روز با به وجود آمدن زبان های متفاوت جایگاه محبوبتری نزد برنامه نویسان پیدا کرد. در اینجا قصد توضیح دادن این نوع برنامه نویسی را ندارم. فقط نگاهی گذرا به آن خواهم داشت تا مفهوم تکنولوژی WPF برایتان روشن تر گردد. همانطور که می دانید، Windows Application ها، از API های سیستم عامل مربوطه ( که اکثرا ویندوز XP نیز می باشد) برای ترسیم عناصر گرافیکی یا همان عناصر ویژوال، استفاده می کنند. به عنوان مثال برای ترسیم انواع دکمه ها، فرم ها و بسیاری از عناصردیگری که با آن ها آشنا هستید، از توابع API ویندوز کمک گرفته می شود. همین مسئله باعث ایجاد محدودیت برای برنامه نویسان در ایجاد کنترل های سفارشی با ظاهر دلخواه خود شده بود. اگر چه با ابزار های گرافیکی که در دات نت فریم ورک 2.0 نیز وجود داشت، می توانستیم تا حد خوبی اقدام به ایجاد کنترل های مورد دلخواه خود را بکنیم، اما این موضوع نیاز به دانستن اطلاعات زیاد در مورد ایجاد کنترل های سفارشی و همچنین نوشتن گاها کد های بسیار زیادی جهت ایجاد کنترل مورد نظر می بود. این به آن دلیل بود که قالب و اساس اولیه کنترل ها بسته بود و نمی توانستید به راحتی کنترل ها را شخصی سازی نمایید. در بهترین حالت، یک برنامه نویس ماهر میتوانست با ارث بری از کلاس Control اقدام به ایجاد یک کنترل جدید با ظاهر و امکانات مورد نظر خود بکند. به عنوان مثال تنها یکی از کلاس های کنترل منویی که در شکل1-2دیده میشود دارای 1000 خط کد به غیر از کدهای تولید شده توسط خود دات نت می باشد. شاید 1000 خط، برای یه برنامه نویس بسیار ناچیز باشد. ولی چنانچه بخواهید تمامی کنترل های برنامه های خود را، خودتان طراحی کنید، می بینید که زمان زیادی از وقت شما صرف نوشتن کد ها می گردد.
این مسئله زمانی نمود بیشتری پیدا میکند که بخواهید، اکثر جنبه های یک کنترل را در کنترل سفارشی خود قرار دهید. به عنوان مثال به دلیل قرار گرفتن حالت های مختلف گرادیان بر روی منو، استفاده از امکانات قبلی مانند ترسیم متن آیتم به صورت اتوماتیک توسط خود منو و یا ترسیم کلید های میان بر آیتم و .... از بین می رود و تمامی این موارد بایستی با کد و توسط شما ایجاد گردد. درست است که می توان از کنترل های ایجاد شده توسط خودتان به کرات و در برنامه های مختلف استفاده کنید و لی تجربه نشان داده است که گاهی نیز مجبور به ایجاد کنترل دیگری شوید. این به این دلیل نیست که شما الزاما کنترل قبلی خود را خوب طراحی نکرده اید . عوامل زیادی می توانند باعث بروز این مورد شوند که پرداختن به آن ها از حوصله این بحث خارج است.
حال که تا حدودی با مشکلات برنامه نویسی های WinApp به روش جاری شدید، در ادامه به معرفی WPF خواهم پرداخت و در ادامه بحث های این آموزش، خواهید دید که WPF چگونه بسیاری از مشکلات موجود را مرتفع می کند.
تکنولوژی WPF به روشی دیگر عمل می کند. در واقع علاوه بر اینکه این تکنولوژی همچنان دارای کنترل های سابقی که آن ها را می شناسید، می باشد، می تواند دسترسی به بیشتر جنبه های کنترل ها را برای شما فراهم کند. در واقع قدرت WPF در این است که اساس و پایه هر کنترلی مانند برنامه نویسی قبل، بسته نیست و این شما هستید که به WPF خواهید گفت که متن روی کنترل را به چه صورتی طراحی کنید. یا پس زمینه کنترل یا کناره های آن را به آن صورتی که شما می گویید طراحی کند. به همین منظور نیز دارای ابزارهای بسیار زیادی جهت کار برای طراحی کنترل های شما مهیا می کند. ابزارهایی مانند قلم موهای گرادیان با تعداد رنگ های نامحدود، انواع ابزار های گرافیکی برای ترسیم شکل دلخواه شما، امکان ایجاد افکت های بسیار زیبا و متنوع بر روی هر قسمتی از کنترل که بخواهید، وجود افکتهای از پیش تعریف شده، امکان طراحی های 2 بعدی و نیز 3 بعدی، امکان ایجاد انیمیشن و بسیاری از امکانات دیگر که به مرور با آن ها آشنا خواهید شد. [sof]
ساختار ویژگیهای جدید در WPF، در واقع یک ساختار جدید و قدرتمند که براساس DirectX و APIهایِ گرافیکی سریعِ سخت افزاری، که معمولاً در اکثر بازیهای کامپیوتری مدرن استفاده میشوند، پایهگذاری شده است. این بدان معناست که برنامهنویس میتواند از Effectهای گرافیکی
جالب، بدون توجه سربار اجرایی که به دلیل استفاده از فرمهای ویندوزی ممکن است به وجود آید، استفاده کند. در حقیقت میتوانید از ویژگیهای پیشرفتهای مانند پشتیبانی از فایلهای ویدئویی و محتویات D3 در فرمهای ویندوزی استفاده کنید.
با به کارگیری این ویژگیها( به همراه یک ابزار طراحی مناسب) امکان ایجاد واسطهای کاربری تحریک کننده چشم و Effectهای بصری ویژه وجود خواهد داشت. البته باید مجدداً خاطرنشان کنیم که انجام چنین کارهایی با استفاده از فرمهای ویندوزی تقریباً غیرممکن است.
با توجه به اینکه ویژگیهای مربوط به پویانمایی، D3 و فایلهای ویدئویی بیشترین توجه در WPF را معطوف خود میکند، باید توجه داشته باشید که با استفاده از WPF میتوانید برنامههای ویندوزی معمولی را با استفاده از خصوصیات بصری ساده (قدیمی) نیز ایجاد کنید. به عبارت دیگر استفاده از کنترلهای معمولی تا هنگامی که WPF در فرمهای ویندوزی کار میکند به سادگی امکان پذیر است. حتی میتوان این طور بیان کرد که WPF ویژگیهایی که مستقیماً به توسعه دهندگان تجاری میشود را تسهیل بخشیده است. این ویژگیها به طور گستردهای شامل مدل انقیاد دادهها، یک مجموعه جدید از کلاسها برای چاپ محتویات و مدیریت صفهای چاپ و یک مشخصه متنی برای نشان دادن متنهای بزرگ قالبدار میشوند.
همچنین یک روش جدید برای ایجاد برنامههای بر مبنای صفحه که به صورت پیوسته در IE اجرا میشوند و میتوان از طریق یک وب سایت به آن دسترسی پیدا کرد و آن را اجرا نمود نیز در نظر گرفته شده است. در این مدل، دیگر اخطارهای امنیتی متداول و تاییدیههای رنجاننده مربوط به نصب را مشاهده نخواهید کرد.
WPF یک چارچوب نمایشی کاملاً جدید است که تواناییهای بسیاری از چارچوبهای قبلی را مانند GDI+، GDI، User و HTML با یکدیگر ترکیب کرده است و توانایی تاثیر گزاری بر روی ابزارهای ایجاد پویانمایی در وب مانند Flash را نیز دارد. البته بر روی برنامههای ویندوزی مانند Microsoft Word نیز تاثیرگذار است.
درک گرافیک ویندوز
درک مزایای مهیج و زیبای WPF بدون پی بردن به این نکته که چگونه برنامه نویسان ویندوز از تکنولوژیهای نمایشی مشابه و یکسان برای بیش از 10 سال استفاده میکردند واقعاً سخت است.
یک برنامه ویندوزی جدید که با زبان #C و یا VB.NET نوشته میشود، به صورت غیر مستقیم به دو بخش اصلی سیستمعامل ویندوز برای ایجاد واسط گرافیکیاش وابسته است:
ü User32: این قسمت عهدهدار فراهم آوردن نمایی شبیه ویندوز برای برنامه است و با عناصری مانند فرمها، دکمهها، جعبههای متن و ... سر و کار دارد.
ü GDI/GDI+: این قسمت پشتیبان ترسیمی برای ایجاد اشکال، متنها و تصاویر در قبال هزینۀ پیچیدگیهای اضافی در برنامه میباشد (البته معمولا عملکرد آن بی زرق و برق است).
هر دو تکنولوژی در سالهای متمادی مورد بازبینیهای متعدد قرار گرفتند و APIهایی که برای تعامل برنامه نویسان با آنها در نظر گرفته شده بودند نیز تغییرات چشمگیری داشته اند. اما هنگامی که برنامه نویسان قصد داشتند در برنامه ای (چه با #C و NET 2.0 و یا زبانهای قدیمیتر مانند VB6 و حتی کدهای برپایه ++MFC C) اقدام به ایجاد تصاویر دستی کنند قسمتهای یکسانی از سیستم عامل ویندوز در پشت پرده در حال کار بودند. Frameworkهای جدیدتر روشهای بهتری برای تعامل با User32 و همچنین +GDI/GDI ارائه کردند. این روشها بهبودهای زیادی در کارآیی برنامه، کاهش پیچیدگی برنامه به همراه داشتند. البته این روشها ویژگیهایی نیز اضافه میکردند که با استفاده از آنها برنامه نویس نیازی به کدنویسی زیاد نداشت. اما این روشها نیز نتوانستند محدودیتهای اساسیِ اجزای اصلی سیستم که بیش از یک دهه از طراحی آن میگذشت را حذف کنند.
نکته: اساسیترین تقسیم وظایف میان User32 و +GDI/GDI حدود ۱۵ سال پیش ارائه شده بود و برای Windows 3.0 دارای ساختاری مناسب بودند. البته در آن زمان User32 در واقع با نام User معرفی گردید زیرا هنوز سیستمهای 32 بیتی ایجاد نشده بودند.
DirectX موتور گرافیکی جدید:
مایکروسافت برای رهایی از محدودیتهای موجود در کتابخانههای User32 و +GDI/GDI تکنولوژی جدیدی را مورد استفاده قرار داد. این تکنولوژی در واقع همان DirectX میباشد. DirectX به عنوان یک ابزار مستعد خطا و متحد برای ایجاد بازی های کامپیوتری بر روی پلتفرم ویندوز کار خود را آغاز کرد.
هدف اصلی در طراحی DirectX افزایش سرعت بود؛ از اینرو مایکروسافت به تعامال نزدیکی با سازندگان کارتهای ویدئویی به منظور فراهم کردن شتاب سخت افزاری لازم که برای الگوهای گرافیکی پیچیده لازم بودند و همچنین effectهای ویژه ای مانند شفافیت و گرافیک سه بعدی پرداخت.
فهرست مطالب:
تکنولوژیهای جدید داتنت
مشکلات تکنولوژیهای قبل در شخصیسازی ابزارها
درک گرافیک ویندوز
Directx موتور گرافیکی جدید
درجهبندیهای WPF
عدم وابستگی WPF به رزولوشن
معماری WPF
ساختار سلسله مراتبی آبجکتها در WPF
فصل دوم :زبان XAML
طراحی واسطهای گرافیکی کاربر قبل از WPF
کاربردهای مختلف XAML
ساختار فایلهای XAML
شکل ساده یک سند XAML
فضای نامها در XAML
خواص و رویدادها در XAML
کامپایل XAML به فایل های BAML تزریق شونده به اسمبلی ها
فصل سوم :چیدمان طراحی کنترلها
ایجاد برنامههای WPF
چیدمان عناصر در WPF
کنترل های کانتینر (ContainerControls)
مفهوم Content در WPF
کنترل Expander
فصل چهارم:نتیجهگیری
مزایای WPF
معایب WPF
چشم انداز
نتیجه گیری
منابع
شامل 72 صفحه فایل word قابل ویرایش بهمراه 23 اسلاید powerpoint
دانلود پروژه تکنولوژی Windows Presentation Foundation) WPF)