WPF چیست؟

WPF مخفف Windows Presentation Foundation و آخرین تکنولوژی مایکروسافت برای طراحی رابط گرافیکی (GUI) می‌باشد. GUI یا رابط گرافیکی، همان ظاهر برنامه است. GUI به شما اجازه ایجاد برنامه‌هایی با عناصر گرافیکی نظیر Label ها، جعبه‌های متن و دیگر عناصری که در بخش ویندوز فرم معرفی شده‌اند را می‌دهد. بدون GUI تمام مراحل ساخت یک برنامه باید به وسیله کدنویسی انجام شود که بسیار زمان بر و خسته کننده است. استفاده از رابط گرافیکی به برنامه نویسان اجازه می‌دهد که بیشتر بر روی کدنویسی تمرکز کنند.

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

پایه و اساس WPF بر Directx استوار می‌باشد. این موضوع سبب می‌شود که بتوان از بسیاری از جنبه‌های گرافیکی بدون ایجاد سربار اضافی بر روی برنامه بهره برد و در واقع برنامه‌هایی با ظاهرهایی بسازید، که ساختن آن‌ها با برنامه نویسی های پیشین (Windows Form) یا غیر ممکن و یا متحمل کار بسیار زیادی بوده است. اگرچه نقطه قوت این تکنولوژی اعمال گرافیکی، انیمیشن و … می‌باشد، ولی این بدان معنی نیست که نمی‌توان با WPF اقدام به ایجاد فرم‌ها و کنترل‌های سابق نمود. این تکنولوژی به شما امکان استفاده از کنترل‌های پیشین را می‌دهد و همچنین برنامه نویسی WinApp را به همان شکلی که می‌شناسید، برای شما مقدور می‌سازد.

یکی دیگر از مشکلاتی که کار کردن با DirectX به صورت مستقیم وجود دارد، به دلیل نوع بهینه سازی و نحوه رندر کردن اشکال توسط کارت‌های ویدیویی متفاوت بود، که با WPF این مشکل نیز مرتفع شده است. یکی از مهمترین اهداف WPF استفاده از GPU به جای CPU جهت انجام روتین‌های پیچیده گرافیکی می‌باشد، که این امر، باعث آزاد شدن CPU، جهت انجام پردازش‌های دیگر در سیستم، می‌شود. WPF به عنوان یک API سطح بالا همانطور که پیشتر توضیح داده شد، قادر به انجام کارهای بسیاری برای شما خواهد بود که قبل از آن، انجام آن‌ها بسیار مشکل و زمان بر و نیاز به نوشتن کدهای بسیاری می‌بود. در ادامه تعدادی از امکانات این تکنولوژی همراه با توضیح مختصر آمده است.

طرح بندی اجزا و عناصر برنامه، شبیه برنامه‌های تحت وب

WPF از عناصر جدید و بسیاری دی تراز بندی و چیدمان کنترل‌ها و عناصر مختلف بر روی فرم‌های برنامه شما استفاده می‌کند. توسط این ابزارها که از کلاس پایه Panel ارث بری می‌کنند، قادر خواهید بود که چدیمان عناصر خود را چنان تنظیم کنید، که برنامه شما در رزولوشن‌های مختلف به خوبی قابل نمایش باشد.

برخی از امکانات و جنبه‌های برنامه نویسی با WPF مدل قدرتمند و قوی طراحی توسط WPF از درگیر شدن با پیکسل‌ها و کار کردن بر روی آن‌ها رهایی خواهید یافت و در واقع با اشیاء و اشکال سطح بالا تعامل خواهید داشت. همچنین قادر به ایجاد اشکال سه بعدی و … خواهید بود.

انیمیشن، صدا و تصویر

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

استایل ها و قالب‌ها

همواره یکی از دغدغه‌های برنامه نویسان ویندوز، ایجاد ظاهری زیبا برای فرم‌ها و عناصر خود بوده است. تا آن جا که اکثر برنامه نویسان به سراغ کامپوننت های شرکت‌های ثالث، که آن‌ها را Third party Components می‌نامیم، رفته و از آن‌ها به کرات در برنامه‌های خود استفاده می‌کرده و می‌کنند. من جدای از اینکه این کامپوننت ها چقدر در عمل و کارایی درست و حساب شده عمل می‌کنند، و اینکه با معیارهای زبان فارسی متناسب هستند (که اکثراً نیستند)، دلیل دیگری برای استفاده نکردن از این نوع کامپوننت ها دارم و ان هم وابستگی برنامه شما به اشیاء و عناصر شرکت‌های دیگر خواهد بود. این موضوع می‌تواند در طولانی مدت و استفاده مکرر از این نوع ابزارها، ضررهای جبران ناپذیری به برنامه نویسیان وارد نماید. با تکنولوژی WPF تقریباً تمامی این مشکلات رفع شده و به راحتی می‌توانید اقدام به ایجاد استایل ها و قالب‌های متناسب با معیار خود و برنامه خود، نمایید. چنانچه برنامه نویسی مسلط به این موارد گردد، مطمئن هستم که دیگر به هیچ عنوان به دنبال ابزارهای ظاهر سازی برنامه‌ها و کامپوننت های متفاوت نخواهد رفت.

دستورات (Commands)

یکی از جنبه‌ها و امکانات فوق العاده زیبا و قدرتمند WPF استفاده از Command ها برای هماهنگ سازی واکنش‌های مختلف کاربر و هماهنگ سازی قسمت‌های مختلف برنامه به کار می‌رود که در جای خود، مفصلاً به شرح آن خواهم پرداخت. فعلاً به همین قدر بسنده کنم که با یادگیری و استفاده از این ابزار، فوق العاده شگفت زده خواهید شدد و خواهید دید که برنامه‌های شما با این ابزار به چه درصد بالایی از کارایی خواهد رسید.

برنامه‌های بر پایه صفحه

کمی پیش‌تر در این مورد صحبت کردم و نمونه عکس برنامه‌ای را هم که از صفحات استفاده شده بود را مشاهده کردید. در موقعیت مناسب‌تری بر روی این نوع برنامه نویسی نیز تمرکز بیشتری خواهیم کرد.

ایجاد واسط کاربر به صورت توصیفی

زمانی که نامی از تکنولوژی WPF برده می‌شود، در ادامه آن نامی هم از XAML می‌آید. XAML که یک زبان توصیفی و XML Based می‌باشد، توسط ویژوال استودیو به کار گرفته می‌شود تا شما بتوانید فرم‌ها و عناصر خود را با سرعت بیشتری ایجاد نمایید. به جرات می‌توانم بگویم که استفاده از XAML در سرعت تولید برنامه‌های شما، تأثیر چشمگیری خواهد داشت. در ابتدا ممکن است در استفاده از آن کمی دچار سردرگمی شوید، تا آن جایی که بخواهید آن را رها کنید و اقدام به ایجاد محیط واسط برنامه خود با کد نمایید. اما با کمی تلاش و مسلط شدن بر آن، از کار کردن با آن لذت خواهید برد.

عدم وابستگی WPF به رزولوشن

بدون شک یکی از جنبه‌های فوق العاده مفید و قوی WPF عدم وابستگی آن به رزولوشن صفحه نمایش است. اگر به خاط داشته باشید، کمی پیش در یک نکته مهم، این موضوع را یادآور شدم که یک برنامه نویس حرفه‌ای در WPF حتی المقدور از خواص Width و Height عناصر برای چیدمان آن‌ها استفاده نخواهد کرد. دلیل این گفته را در ادامه متوجه خواهید شد.

برنامه‌های تحت ویندوزی که تا کنون و با تکنولوژی‌های موجود نوشته می‌شدند (می‌شوند) وابستگی زیادی به رزولوشن صفحه نمایش دارند. یه عنوان مثال فرم‌های شما، که در صفحه نمایش شما با رزولوشن 1024 * 768 به خوبی طراحی شده‌اند، ممکن است در یک کامپیوتر دیگری با رزولوشن بالاتر از آن (این امر در Laptop ها بسیار معمول می‌باشد. علاوه بر اینکه ان ها در بیشتر مواقع از تراکم 120 DPI استفاده می‌کنند. در صورتی که مانیتورهای CRT معمولاً از تراکم 96 DPI استفاده می‌کنند. “گر چه قابل تغییر می‌باشد”) کوچک شود، و بر عکس، در یک سیستم با رزولوشن پایین، قسمتی از فرم‌های شما از صفحه نمایش خارج گردد. اما با WPF این مشکلات مرتفع می‌گردد.

دلیل آن هم استفاده از سیستم خاصی برای اندازه گیری اجزاء و عناصر برنامه شما، می‌باشد. عناصر، اعم از دکمه‌ها، فرم‌ها و هر شی قابل اندازه گیری با واحدی با نام (DIU (Device Independent Unit اندازه گیری می‌شوند. هر یک DIU معادل با 1/96 (1 تقسیم بر 96) هر اینچ می‌باشد. در واقع می‌توان گفت هر DIU در صفحه نمایشی با تراکم پیکسل استاندارد یعنی 96 DPI، دقیقاً برابر با 1 پیکسل فیزیکی در صفحه نمایش می‌باشد. حال اگر از DPI بالاتری استفاده گردد، طبیعتاً هر یک DIU (در همان رزولوشن قبلی) کمتر از 1 پیکسل خواهد شد (چرا؟). حال WPF با اندازه گیری DPI در هر رزولوشنی که با فرمول مشخصی محاسبه می‌شود، می‌توانید سایز مناسب عناصر شما را محاسبه کند. این روش باعث می‌شود که نمایش یک کنترل مانند Button در رزولوشن 1024*786 و با 96 DPI تراکم، با نمایش آن در رزولوشن 1600*1200 و با تراکم 120 DPI یکسان باشد.
 
منبع : barnamenevis.org