PDA

View Full Version : سوال: فرق wpf با ویندوز فرم اپلیکیشن



ali208
یک شنبه 12 تیر 1390, 21:34 عصر
با سلام

از دوستان میشه لطفا تفاوتها و کاربردهای wpf را با windows form application توضیح بدید؟در هر دوش فرم های مبتی بر ویندوز طراحی میشود پس فرقشون در چیه؟

Mehdi Naderi
یک شنبه 12 تیر 1390, 22:24 عصر
Win App همزمان با روی کار آمدن ویندوز توسط مایکروسافت آعاز شد و بر اساس win API استوار بوده و از آن برای عناصر ویژوال خود استفاده میکند بنابراین ویندوز فرمم ها با یک سری محدودیت مواجه هستند
اما WPF بر اساس Direx بنا شده و بنابراین ترسیم های گرافیکی جذاب که با Win app غیر ممکن و یا برای اغلب برنامه نویسان مشکل است در این محیط به سادگی قابل انجام است

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

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

اما مهمترین ویژگی WPF جدا کردن بخش کد و طراحی برنامه می باشد. در واقع طراحان گرافیکی می توانند از ابزارهای پیشرفته ای برای طراحی User Interfaceبرنامه استفاده نمایند. در تکنیک های نمایشی قبلی جداسازی کد از طراحی آسان نبود. مشکل اصلی در Windows Form Application این است که، هر فرمی که شما ایجاد می کنیدبطور کامل تحت کد C# ایجاد می شود. زمانی که کنترلی را به سطح طراحی می کشید، Visual Studio بلافاصله کد آن را در Form Class ایجاد و تنظیم می کند. طراحان گرافیک هم هیچ ابزاری برای کار با کدهای C# ندارند.

ali208
یک شنبه 12 تیر 1390, 22:58 عصر
از پاسخ کاملتون سپاسگذارم.

ali208
یک شنبه 12 تیر 1390, 23:02 عصر
Win App همزمان با روی کار آمدن ویندوز توسط مایکروسافت آعاز شد و بر اساس win API استوار بوده و از آن برای عناصر ویژوال خود استفاده میکند بنابراین ویندوز فرمم ها با یک سری محدودیت مواجه هستند
اما WPF بر اساس Direx بنا شده و بنابراین ترسیم های گرافیکی جذاب که با Win app غیر ممکن و یا برای اغلب برنامه نویسان مشکل است در این محیط به سادگی قابل انجام است

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

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

اما مهمترین ویژگی WPF جدا کردن بخش کد و طراحی برنامه می باشد. در واقع طراحان گرافیکی می توانند از ابزارهای پیشرفته ای برای طراحی User Interfaceبرنامه استفاده نمایند. در تکنیک های نمایشی قبلی جداسازی کد از طراحی آسان نبود. مشکل اصلی در Windows Form Application این است که، هر فرمی که شما ایجاد می کنیدبطور کامل تحت کد C# ایجاد می شود. زمانی که کنترلی را به سطح طراحی می کشید، Visual Studio بلافاصله کد آن را در Form Class ایجاد و تنظیم می کند. طراحان گرافیک هم هیچ ابزاری برای کار با کدهای C# ندارند.

پس اگه یک بزنامه کاربردی مثل ماشین حساب با فرمت exe ایجاد کنم استفاده از wpf بهتره؟

sia_2007
یک شنبه 12 تیر 1390, 23:13 عصر
دوست عزیز، من در این پست به این مطلب پرداختم، و امیدوارم به درد شما نیز بخوره
http://barnamenevis.org/showthread.php?292829-تفاوت-Windows-Form-با-WPF-چیست؟&p=1287150&viewfull=1#post1287150

در مورد سوالتون هم باید بگم که حتما همین طور هستش و WPF کاملا گزینه ی بهتری هست
موفق باشید

perkas
دوشنبه 28 مرداد 1392, 00:13 صبح
سلام

داشتم رو یه پروژه کار میکردم که با wpf آشنا شدم
میخواستم بدونم که اگه بجای winform از wpn با کد نویسی سی شارپ استفاده کنم تفاوتهای این دو با هم چه چیزایی هستن
چه موضوعاتی رو باید دنبال و سرچ کنم ؟؟؟؟

barnamenevisjavan
چهارشنبه 23 آبان 1397, 18:43 عصر
سلام wpf علاوه بر اینکه طراحی رابط کاربری رو ساده میکنه کارایی برنامه رو هم بالا میبره، به این صورت که ممکنه برای پر کردن یه لیست 10 هزارتایی توی ویندوز فرم 1 دقیقه زمان نیاز باشه ولی توی wpf این کار سریعتر و در حد چند ثانیه انجام میشه، توی wpf ما از همون کد نویسی سی شارپ استفاده میکنیم فقط برای طراحی رابط کاربری از xaml استفاده میکنیم و اگر بخواین برنامه خودتون رو از win به wpf بیارین نیازی به تغییر آنچنانی نیست و یکسری موارد ریز رو باید تغییر بدین که خیلی جزئی هست. همینطور استفاده از الگو ها و معماری ها تو wpf راحت تر و امکان پذیر تر هستش مثل جدا کردن رابط کاربری از کدها

hahaie
سه شنبه 06 آذر 1397, 18:24 عصر
مشکل رزولیشن متفاوت مانیتورها توی win app قابل حل نیست؟

barnamenevisjavan
چهارشنبه 07 آذر 1397, 18:05 عصر
مشکل رزولیشن متفاوت مانیتورها توی win app قابل حل نیست؟
با استفاده از دات نت فریمورک 4.6 و بالاتر یکسری بهبود هایی درنظر گرفته شده البته باید فعالش کنین (فایل مانیفست رو به پروژه اضافه کنید)
ولی توی wpf رزولیشن مشکلی نداره و بصورت پیشفرض خودش خودکار بهینه میشه

رامین مرادی
پنج شنبه 08 آذر 1397, 08:37 صبح
با استفاده از دات نت فریمورک 4.6 و بالاتر یکسری بهبود هایی درنظر گرفته شده البته باید فعالش کنین (فایل مانیفست رو به پروژه اضافه کنید)
ولی توی wpf رزولیشن مشکلی نداره و بصورت پیشفرض خودش خودکار بهینه میشه

در این مورد یه کم بیشتر توضیح میدین؟

barnamenevisjavan
پنج شنبه 08 آذر 1397, 12:44 عصر
در این مورد یه کم بیشتر توضیح میدین؟
توضیحات بیشتر اینجا
https://docs.microsoft.com/en-us/dotnet/framework/winforms/high-dpi-support-in-windows-forms
روی پروژه راست کلیک کنین و از Add new item دنبال manifest باشین به پروژه اضافه کنین بعدش همین فایل رو باز کنین و کدهایی که کامنت شده رو از حالت کامنت خارج کنین
البته این روش دیگه تو دات نت 4.7 پیشنهاد نمیشه و بهتره داخل فایل app.config تعریف بشه مقاله رو کامل بخونین