سلام دوست عزیز وارد حساب کاربری خود شوید
به طور کلی برنامه های ویندوزی از دو امکان، توابع User32 و GDI/GDI+ برای ترسیم عناصر گرافیکی استفاده میکنند. شرکت مایکروسافت به دلیل محدودیت هایی که در هر یک از دوبخش فوق، وجود داست، اقدام به ایجاد کتابخانه سطح بالایی به نام DirectX کرد. این ابزار با بهره گیری از توان کارت های گرافیکی با بهره بری بالا، حداکثر توان آن را برای ایجاد گرافیک های قوی به کار میبرد. اما به دلیل برقراری ارتباط مشکل با آن و نیاز به کد نویسی های زیاد، این ابزار بیشتر در تهیه بازی ها و برنامه های گرافیکی مورد استفاده قرار گرفت و جایگاه زیادی در توسعه برنامه های تجاری پیدا نکرد. تکنولوژی WPF یا Avalon یک زیر سیستم گرافیکی لحاظ شده در دات نت ۳٫۰ به بالا است که باعث جداسازی ساختار UI از منطق Business Logic میگردد. معادل آن (زیر مجموعه ای از آن) در وب هم مورد استفاده قرار میگیرد با نامWPF/E )با نام رمز(SilverLight و تمامی این مشکلات را مرتفع کرده. WPF از تمامی قدرت DirectX جهت ایجاد گرافیک های ۲ بعدی و ۳ بعدی استفاده میکند. همچنین ابزار های بسیاری را جهت طراحی کردن در اختیار شما قرار میدهد.[saf]
همزمان با ظهور نسخه ۳٫۰ دات نت فریم ورک، تکنولوژی های جدیدی نیز به وجود آمد. این تکنولوژی ها، که بر خلاف تصور سطحی و ابتدایی بسیاری از برنامه نویسان درابتدای ظهور آن ها، صرفا اضافه شدن تعدادی دات نت اسمبلی به دات نت اسمبلی های قبلی، تلقی می شد، تغییرات بسیاری را در امر برنامه نویسی دات نت به وجود آورد. تکنولوژی WPF به همراه تکنولوژی های WCF و WWF با نسخه ۳٫۰ دات نت فریم ورک توسط شرکت ماکروسافت معرفی شدند.در ادامه توضیح مختصری راجع به WCF و WWF خواهیم دید و سپس به بحث اصلی، یعنیWPF خواهیم پرداخت.
تکنولوژی WCF که مخفف Windows Communication Foundation می باشد، ترکیب شده تکنولوژی های ارتباطی مختلفی که در دات نت فریم ورک ۲٫۰ وجود داشت، می باشد. در دات نت فریم ورک ۲٫۰ ، تکنولوژی های ارتباطی بین سیستم ها عبارت بودند از، ارتباطات بر پایه Soap ، ارتباطات دودویی بهینه شده و…. تکنولوژی WCF که با نام Indigo نیز شناخته می شود، تمامی جنبه های ارتباطی بین سیستم ها را درون خود دارد.
تکنولوژی WWF که مخفف Windows Workflow Foundation می باشد و بیشتر به صورت مخفف WF نشان داده می شود، امکان پیاده سازی و حل مسائل پیچیده دنیای پیرامون خود را که در حالت عادی ممکن است حل آن بسیار پیچییده و دشوار به نظر آید، به صورت بصری و بسیار ساده ارائه می کند. در کل دو شکل Sequential و State Machine را می توانید با WF پیاده سازی کنید. به عنوان نمونه بسیار ساده به راحتی می توانید یک دستور چند شرطی را به صورت کاملا انتزاعی و با امکاناتی که برای طراحی آن موجود است، پیاده سازی نمایید. به عنوان مثال شکل۱-۱نمونه پیاده سازی یک دستور چهار شرطی در سیستم WF از نوع Sequential می باشد.
پس از توضیح و اشارات مختصری درباره تکنولوژی های همپای تکنولوژی WPF که ارتباط بسیار نزدیکی نیز با هم دارند، اینک به معرفی تکنولوژی WPF خواهم پرداخت. WPF سر آغاز سه کلمه Windows Presentation Foundation می باشد. این تکنولوژی برای NET. طراحی شده است و همچنین تاثیر زیادی بر تکنولوژیهای نمایشی جدیدی مانند HTML و Flash داشته و باعث بهینه سازی سرعت سخت افزار میگردد. WPF شامل تغییرات بنیادینی در زمینه واسط گرافیکی ویندوز از زمان Windows95 میباشد.
هر کسی که تا به حال در محیط های گرافیکی و یا به اصلاح برنامه نویسان، محیط های ویژوال، برنامه نویسی کرده باشد، یقینا با مفاهیم Windows Application ها که گاها به صورت مخفف WinApp نیز نامیده می شوند، آشنا می باشد. این نوع برنامه نویسی همزمان با ورود سیستم عامل های ویندوز در دنیای کامپیوتر شروع شد و روز به روز با به وجود آمدن زبان های متفاوت جایگاه محبوبتری نزد برنامه نویسان پیدا کرد. در اینجا قصد توضیح دادن این نوع برنامه نویسی را ندارم. فقط نگاهی گذرا به آن خواهم داشت تا مفهوم تکنولوژی WPF برایتان روشن تر گردد. همانطور که می دانید، Windows Application ها، از API های سیستم عامل مربوطه ( که اکثرا ویندوز XP نیز می باشد) برای ترسیم عناصر گرافیکی یا همان عناصر ویژوال، استفاده می کنند. به عنوان مثال برای ترسیم انواع دکمه ها، فرم ها و بسیاری از عناصردیگری که با آن ها آشنا هستید، از توابع API ویندوز کمک گرفته می شود. همین مسئله باعث ایجاد محدودیت برای برنامه نویسان در ایجاد کنترل های سفارشی با ظاهر دلخواه خود شده بود. اگر چه با ابزار های گرافیکی که در دات نت فریم ورک ۲٫۰ نیز وجود داشت، می توانستیم تا حد خوبی اقدام به ایجاد کنترل های مورد دلخواه خود را بکنیم، اما این موضوع نیاز به دانستن اطلاعات زیاد در مورد ایجاد کنترل های سفارشی و همچنین نوشتن گاها کد های بسیار زیادی جهت ایجاد کنترل مورد نظر می بود. این به آن دلیل بود که قالب و اساس اولیه کنترل ها بسته بود و نمی توانستید به راحتی کنترل ها را شخصی سازی نمایید. در بهترین حالت، یک برنامه نویس ماهر میتوانست با ارث بری از کلاس Control اقدام به ایجاد یک کنترل جدید با ظاهر و امکانات مورد نظر خود بکند. به عنوان مثال تنها یکی از کلاس های کنترل منویی که در شکل۱-۲دیده میشود دارای ۱۰۰۰ خط کد به غیر از کدهای تولید شده توسط خود دات نت می باشد. شاید ۱۰۰۰ خط، برای یه برنامه نویس بسیار ناچیز باشد. ولی چنانچه بخواهید تمامی کنترل های برنامه های خود را، خودتان طراحی کنید، می بینید که زمان زیادی از وقت شما صرف نوشتن کد ها می گردد.
این مسئله زمانی نمود بیشتری پیدا میکند که بخواهید، اکثر جنبه های یک کنترل را در کنترل سفارشی خود قرار دهید. به عنوان مثال به دلیل قرار گرفتن حالت های مختلف گرادیان بر روی منو، استفاده از امکانات قبلی مانند ترسیم متن آیتم به صورت اتوماتیک توسط خود منو و یا ترسیم کلید های میان بر آیتم و …. از بین می رود و تمامی این موارد بایستی با کد و توسط شما ایجاد گردد. درست است که می توان از کنترل های ایجاد شده توسط خودتان به کرات و در برنامه های مختلف استفاده کنید و لی تجربه نشان داده است که گاهی نیز مجبور به ایجاد کنترل دیگری شوید. این به این دلیل نیست که شما الزاما کنترل قبلی خود را خوب طراحی نکرده اید . عوامل زیادی می توانند باعث بروز این مورد شوند که پرداختن به آن ها از حوصله این بحث خارج است.
حال که تا حدودی با مشکلات برنامه نویسی های WinApp به روش جاری شدید، در ادامه به معرفی WPF خواهم پرداخت و در ادامه بحث های این آموزش، خواهید دید که WPF چگونه بسیاری از مشکلات موجود را مرتفع می کند.
تکنولوژی WPF به روشی دیگر عمل می کند. در واقع علاوه بر اینکه این تکنولوژی همچنان دارای کنترل های سابقی که آن ها را می شناسید، می باشد، می تواند دسترسی به بیشتر جنبه های کنترل ها را برای شما فراهم کند. در واقع قدرت WPF در این است که اساس و پایه هر کنترلی مانند برنامه نویسی قبل، بسته نیست و این شما هستید که به WPF خواهید گفت که متن روی کنترل را به چه صورتی طراحی کنید. یا پس زمینه کنترل یا کناره های آن را به آن صورتی که شما می گویید طراحی کند. به همین منظور نیز دارای ابزارهای بسیار زیادی جهت کار برای طراحی کنترل های شما مهیا می کند. ابزارهایی مانند قلم موهای گرادیان با تعداد رنگ های نامحدود، انواع ابزار های گرافیکی برای ترسیم شکل دلخواه شما، امکان ایجاد افکت های بسیار زیبا و متنوع بر روی هر قسمتی از کنترل که بخواهید، وجود افکتهای از پیش تعریف شده، امکان طراحی های ۲ بعدی و نیز ۳ بعدی، امکان ایجاد انیمیشن و بسیاری از امکانات دیگر که به مرور با آن ها آشنا خواهید شد. [sof]
ساختار ویژگیهای جدید در WPF، در واقع یک ساختار جدید و قدرتمند که براساس DirectX و APIهایِ گرافیکی سریعِ سخت افزاری، که معمولاً در اکثر بازیهای کامپیوتری مدرن استفاده میشوند، پایهگذاری شده است. این بدان معناست که برنامهنویس میتواند از Effectهای گرافیکی
جالب، بدون توجه سربار اجرایی که به دلیل استفاده از فرمهای ویندوزی ممکن است به وجود آید، استفاده کند. در حقیقت میتوانید از ویژگیهای پیشرفتهای مانند پشتیبانی از فایلهای ویدئویی و محتویات D3 در فرمهای ویندوزی استفاده کنید.
با به کارگیری این ویژگیها( به همراه یک ابزار طراحی مناسب) امکان ایجاد واسطهای کاربری تحریک کننده چشم و Effectهای بصری ویژه وجود خواهد داشت. البته باید مجدداً خاطرنشان کنیم که انجام چنین کارهایی با استفاده از فرمهای ویندوزی تقریباً غیرممکن است.
با توجه به اینکه ویژگیهای مربوط به پویانمایی، D3 و فایلهای ویدئویی بیشترین توجه در WPF را معطوف خود میکند، باید توجه داشته باشید که با استفاده از WPF میتوانید برنامههای ویندوزی معمولی را با استفاده از خصوصیات بصری ساده (قدیمی) نیز ایجاد کنید. به عبارت دیگر استفاده از کنترلهای معمولی تا هنگامی که WPF در فرمهای ویندوزی کار میکند به سادگی امکان پذیر است. حتی میتوان این طور بیان کرد که WPF ویژگیهایی که مستقیماً به توسعه دهندگان تجاری میشود را تسهیل بخشیده است. این ویژگیها به طور گستردهای شامل مدل انقیاد دادهها، یک مجموعه جدید از کلاسها برای چاپ محتویات و مدیریت صفهای چاپ و یک مشخصه متنی برای نشان دادن متنهای بزرگ قالبدار میشوند.
همچنین یک روش جدید برای ایجاد برنامههای بر مبنای صفحه که به صورت پیوسته در IE اجرا میشوند و میتوان از طریق یک وب سایت به آن دسترسی پیدا کرد و آن را اجرا نمود نیز در نظر گرفته شده است. در این مدل، دیگر اخطارهای امنیتی متداول و تاییدیههای رنجاننده مربوط به نصب را مشاهده نخواهید کرد.
WPF یک چارچوب نمایشی کاملاً جدید است که تواناییهای بسیاری از چارچوبهای قبلی را مانند GDI+، GDI، User و HTML با یکدیگر ترکیب کرده است و توانایی تاثیر گزاری بر روی ابزارهای ایجاد پویانمایی در وب مانند Flash را نیز دارد. البته بر روی برنامههای ویندوزی مانند Microsoft Word نیز تاثیرگذار است.
درک مزایای مهیج و زیبای WPF بدون پی بردن به این نکته که چگونه برنامه نویسان ویندوز از تکنولوژیهای نمایشی مشابه و یکسان برای بیش از ۱۰ سال استفاده میکردند واقعاً سخت است.
یک برنامه ویندوزی جدید که با زبان #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 معرفی گردید زیرا هنوز سیستمهای ۳۲ بیتی ایجاد نشده بودند.
مایکروسافت برای رهایی از محدودیتهای موجود در کتابخانههای User32 و +GDI/GDI تکنولوژی جدیدی را مورد استفاده قرار داد. این تکنولوژی در واقع همان DirectX میباشد. DirectX به عنوان یک ابزار مستعد خطا و متحد برای ایجاد بازی های کامپیوتری بر روی پلتفرم ویندوز کار خود را آغاز کرد.
هدف اصلی در طراحی DirectX افزایش سرعت بود؛ از اینرو مایکروسافت به تعامال نزدیکی با سازندگان کارتهای ویدئویی به منظور فراهم کردن شتاب سخت افزاری لازم که برای الگوهای گرافیکی پیچیده لازم بودند و همچنین effectهای ویژه ای مانند شفافیت و گرافیک سه بعدی پرداخت.
این تکنولوژی در طول سالهای بعد از اولین انتشارش (مدتی بعد از Windows 95) رشدهای قابل ملاحظهای داشته است و هم اکنون یکی از اجزای لاینفک در سیستم عامل ویندوز میباشد که از تمامی کارتهای ویدئویی پشتیبانی میکند. اگرچه APIهای برنامه نویسیِ DirectX هنوز هم اساس کار آن را به عنوان ابزاری برای توسعه بازی معرفی میکنند، اما به علت پیچدیگی زیاد کار با آنها، از DirectX تقریباً در هیچ یک از برنامههای ویندوزی (مانند برنامههای تجاری)استفاده نمیشود.
WPF تمامی این مشکلات را برطرف کرده است. در WPF از تکنولوژیهای +GDI/GDI به عنوان پایه کار استفاده نمیشود. در عوض از DirectX استفاده میشود. در برنامههای WPF بدون توجه به اینکه برنامه نویس چه واسط کاربری را ایجاد میکند از DirectX استفاده میشود. این بدان معناست که اگر شما بخواهید یک طرح گرافیکی پیچیده و سه بعدی ایجاد کنید و یا یک دکمه به همراه متنی آشکار ایجاد کنید، تمامی کارهای ترسیمی از طریق DirectX انجام میشود. بالنتیجه، میتوانید در تمامی برنامههای تجاری میتوانید به سادگی از effectهای غنی را بدون هیچ مشکلی به کار برید. همچنین میتوانید از مزایایِ شتابدهنده سختافزاری نیز بهرهمند شوید. این بدان معناست که DirectX به کارهایِ زیادی که به GPU مرتبط است دخالت نمیکند و به انجام کارهای دیگری میپردازد.
نکته: GPU یک پردازشگر مجزا است که بر روی کارتهای ویدئویی نصب میشود.
نکته: DirectX نسبت به +GDI/GDI کارآیی بهتری دارد؛ زیرا درک دقیقی از عوامل سطح بالا مانند گرادیانها (شیب) و همچنین الگوها را که میتوانند مستقیماً توسط کارت ویدئویی انجام شوند را دارد اما +GDI/GDI از این مزیت بیبهرهاند. از اینرو برای انجام چنین کارهایی توسط +GDI/GDI باید دستورات مربوطه را به دستورات پیکسل به پیکسل تبدیل کرده و سپس اجرا کنید. بدیهی است که این عمل مدت زمانی طولانیتری را به خود اختصاص میدهد و بسیار کند عمل میکند.
تنها عنصری که هنوز در صحنه حاضر است User32 (با کمی محدودیت) میباشد. این امر بدان دلیل است که WPF هنوز از User32 برای انجام سرویسهای خاصی مانند اجرای دریافت ورودیها ودستهبندی اینکه هر برنامه دربردارنده چه قسمتی از صفحه نمایش میباشد. با این حال کلیه عملیات ترسیمی توسط DirectX انجام میپذیرد.
نکته: باید توجه داشته باشید که WPF یک روپوش جدید برای +GDI/GDI نیست؛ بلکه یک جایگزین برای آنها میباشد. (یک لایه جدید که با DirectX کار می کند)
نکته: در پشتیبانی نرمافزاری WPF یک حالت استثناء وجود دارد. به علت پشتیبانی ضعیف راهاندازها، WPF فقط هنگامی عمل خوشنماسازی را برای ترسیمات D3 انجام میدهد که برنامه بر روی ویندوز Vista اجرا گردد (همچنین باید یک راهانداز محلی در ویندوز ویستا برای کارت ویدئویی نیز داشته باشید). این بدان معناست که اگر تصویر سه بعدی را بر روی سیستم عامل Windows XP رسم کنید، احتمالاً با لبههایی دندانهدار در انتها تصویر مواجه خواهید شد. اما اگر همان تصویر را در Windows Vista اجرا کنید لبههای تصویر روان و سلیس خواهند بود. خوشنماسازی برای ترسیمات D2 بدون در نظر گرفتن سیستم عامل پیادهسازی شده است.
نکته: با داشتن یک کارت ویدئویی قدرتمند، تضمینی برای داشتن سرعت و کیفیت در WPF وجود ندارد. نرمافزارها در این مورد نیز نقش مهمی را ایفا میکنند.
نکته: هدف اصلی WPF پردازش کارهای گرافیکی توسط GPU برای میباشد. به جای استفاده از CPU اصلی کامپیوتر برای پردازش روتینهای گرافیکی پیچیده از GPU که بر روی کارت گرافیکی به صورت مجزا وجود دارد استفاده میشود. با این کار CPU برای انجام فعالیتهای دیگر آزاد باقی میماند و از کارت ویدئویی استفاده مناسب و حداکثر صورت خواهد گرفت.
درجه بندیهای WPF
کارتهای ویدئویی بسیار با یکدیگر متفاوت میباشند. هنگامی که WPF یک کارت ویدئویی را مورد دسترسی قرار میدهد، فاکتورهای مهمی را مد نظر قرار میدهد:
ü میزان حافظه RAM در آن کارت.
ü پشتیبانی از پیسکلهای سایهدار.
ü پشتیبانی از vertexهای سایه دار.
ü ….
بر اساس این جزئیات به هر کارت گرافیکی یک مقدار برای درجه اجرایی داده میشود. مقادیر انتسابی به سه دسته زیر تقسیم میشوند:
ü Rendering Tire 0: کارتهای ویدئویی با این درجه، از هیچگونه شتاب (بهینگی) سختافزاری پشتیبانی نمیکنند. این درجه معادل استفاده از نسخههای DirectX 7.0 به پایین میباشد.
ü Rendering Tire 1: کارتهای ویدئویی این دسته قسمتی از خصوصیات شتاب سختافزاری را پشتیبانی میکنند. این درجه معادل استفاده از DirectX 7.0 تا DirectX 9.0 می باشد.
ü Rendering Tire 2: کارتهای این قسمت، از تمامی ویژگیهای شتاب سختافزاری حمایت میکنند. این دسته معادل استفاده از DirectX 9.0 به بالا می باشد.
ممکن است بخواهید درجهای که برای کارت گرافیکی شما در نظر گرفته شده است را مشاهده کنید. برای این کار میبایست مقدار خصوصیت Tier که در کلاس System.Windows.Media.RenderCapability وجود دارد را بازیابی کنید. برای تطبیق این مقدار با درجه بندیهای فوق میبایست مقدار خصوصیت Tier را ۱۶ بیت به سمت راست شیفت دهید. در زیر نمونه این کد آورده شده است:
int renderingTier = (RenderCapability.Tier >> 16);
نکته: برای استفاده از کلاسهای موجود در فضانام فوق میبایست اسمبلی PresentationCore را به Referenceها اضافه کنید.[per]
بدون شک یکی از جنبه های فوق العاده مفید و قوی WPF عدم وابستگی آن به رزولوشن صفحه نمایش است. یک برنامه نویس حرفه ای در WPF حتی المقدور از خواص Width و Height عناصر برای چیدمان آن ها استفاده نخواهد کرد. یقینا برایتان غیر قابل تصور است. به این دلیل که تا بحال هر عنصری که در برنامه خود استفاده کردهاید، پس از نامگذاری آن اقدام به ایجاد سایز مناسب آن نموده اید اما در نمونه برنامه ها و بخش های آتی خواهید دید، که کمترین استفاده را از این دو خاصیت خواهیم کرد. این موضوع به دلیل ماهیت WPF و غیر وابسته بودن به رزولوشن صفحه نمایش می باشد .
برنامه های تحت ویندوزی که تا کنون و با تکنولوژیهای موجود نوشته می شدند( می شوند) وابستگی زیادی به رزولوشن صفحه نمایش دارند. به عنوان مثال فرم های شما، که در صفحه نمایش شما با رزولوشن ۱۰۲۴ * ۷۶۸ به خوبی طراحی شده اند، ممکن است در یک کامپیوتر دیگری با رزولوشن بالاتر از آن (این امر در Laptop ها بسیار معمول می باشد. علاوه بر اینکه آن ها در بیشتر مواقع از تراکم ۱۲۰ DPI استفاده می کنند. در صورتی که مونیتور های CRT معمولا از تراکم ۹۶ DPI استفاده می کنند. “گر چه قابل تغییر می باشد” ) کوچک شود، و بر عکس، در یک سیستم با رزولوشن پایین، قسمتی از فرم های شما از صفحه نمایش خارج گردد.
اما با WPF این مشکلات مرتفع می گردد. دلیل آن هم استفاده از سیستم خاصی برای اندازه گیری اجزاء و عناصر برنامه شما، می باشد. عناصر، اعم از دکمه ها، فرم ها و هر شی قابل اندازه گیری با واحدی با نام DIU (Device Independent Unit ) اندازه گیری می شوند. هر یک DIU معادل با ۱/۹۶ (۱ تقسیم بر ۹۶) هر اینچ می باشد. در واقع می توان گفت هر DIU در صفحه نمایشی با تراکم پیکسل استاندارد یعنی ۹۶ DPI ، دقیقا برابر با ۱ پیکسل فیزیکی در صفحه نمایش می باشد. حال اگر از DPI بالاتری استفاده گردد، طبیعتا هر یک) DIU در همان رزولوشن قبلی)کمتر از ۱ پیکسل خواهد شد.
حال WPF با اندازه گیری DPI در هر رزولوشنی که با فرمول مشخصی محاسبه می شود، می توانید سایز مناسب عناصر شما را محاسبه کند. این روش باعث می شود که نمایش یک کنترل مانند Button در رزولوشن ۱۰۲۴*۷۸۶ و با ۹۶ DPI تراکم، با نمایش آن در رزولوشن ۱۶۰۰*۱۲۰۰ و با تراکم ۱۲۰ DPI یکسان باشد.
حال باید دلیل اینکه چرا نباید حتی الامکان عرض و ارتفاع کنترل ها را به صورت مطلق و دستی تعیین کرد را متوجه شده باشید.
چكيده
۲
فصل اول :مقدمه ای بر تکنولوژی
Windows Presentation Foundation
تکنولوژی¬های جدید دات¬نت ۸
مشکلات تکنولوژی¬های قبل در شخصی¬سازی ابزارها ۱۰
درک گرافیک ویندوز ۱۴
Directx موتور گرافیکی جدید ۱۵
درجه¬بندی¬های WPF ۱۸
عدم وابستگی WPF به رزولوشن ۱۹
معماری WPF ۲۱
ساختار سلسله مراتبی آبجکت¬ها در WPF ۲۴
فصل دوم :زبان XAML
طراحی واسط¬های گرافیکی کاربر قبل از WPF ۲۸
کاربردهای مختلف XAML ۲۹
ساختار فایل¬های XAML ۳۰
شکل ساده یک سند XAML ۳۳
فضای نام¬ها در XAML ۳۵
خواص و رویدادها در XAML ۳۶
کامپایل XAML به فایل های BAML تزریق شونده به اسمبلی ها
۴۲
فصل سوم :چیدمان طراحی کنترل¬ها
ایجاد برنامه¬های WPF ۴۵
چیدمان عناصر در WPF ۴۹
کنترل های کانتینر (ContainerControls) ۵۱
مفهوم Content در WPF ۵۳
کنترل Expander ۵۸
فصل چهارم:نتیجه¬گیری
مزایای WPF ۶۱
معایب WPF ۶۴
چشم انداز ۶۵
نتیجه¬گیری ۶۶
منابع ۶۷
فهرست شکلها
عنوان صفحه
فصل اول :مقدمه ای بر تکنولوژی
Windows Presentation Foundation
شکل۱-۱)نمونه پیاده سازی یک دستور چهار شرطی در سیستم WF ۹
شکل۱-۲ )کنترل منویی ۱۱
شکل۱-۳ )معماری WPF ۲۲
شکل۱-۴ )ساختار سلسله مراتبی آبجکت های مختلف را در تکنولوژی WPF ۲۴
فصل دوم :زبان XAML
شکل۲-۱)یک نمونه از آبجکت TextBoxکه تعدای خواص آن از جمله رنگی به عنوان پس زمینه و رنگ پیش زمینه و .. تعریف شده است. ۳۷
شکل۲-۲ )در این شکل ظاهر TextBox با تغییر خاصیت BackGround و ForeGround تغییر کرده است. ۳۹
شکل۲-۳)وجود گزینه دیگری با عنوان <New Event Handler> را نشان میدهد که با انتخاب آن می توانید، یک رویداد جدید برای کنترل مورد نظر ایجاد کنید. ۴۱
شکل۲-۴)نحوه تعریف یک رویداد کلیک برای یک Button ۴۱
شکل۲-۵)نحوه رفتن به یک رویداد از قبل تعریف شده ۴۲
فصل سوم :چیدمان طراحی کنترل¬ها
شکل۳-۱) ایجاد یک پروژه WPF ۴۵
شکل۳-۲)نتیجه حاصل ازایجاد یک پروژه WPF Application ۴۷
شکل۳-۳ )نمونه ای از یک عنصر ToolTip ۵۴
شکل۳-۴)سلسله مراتب ارث¬بری کنترلهای کانتینر وکنترلهای محتوا ۵۵
شکل۳-۵ )نمایش عکس بعنوان محتوای یک Button ۵۸
فصل چهارم:نتیجه¬گیری
شکل۴-۱) نمای ظاهری یاهو مسنجر جدید ویژه سیستم عامل ویستا ۶۵