رفتن به مطلب
برای استفاده از انجمن و عضـویت کلیک کنید.
d3v3lop3r

سوال در مورد WPF

پست های پیشنهاد شده

d3v3lop3r    18

گروه دانشجو

سلام

1. فرق بی WPF و c# project چیه ؟ فقط طراحی بهتر ؟

2. ساخت کامپوننت توی wpf مثل c# project کار سختیه ؟

3. ایا میشه اون بخش سیاه توی فرم WPF رو پاک کرد ؟ چطور ؟ اصلا این واسه ی چیه ؟ لینک عکس 

4. امنیت لو نرفتن سورسش فرقی با سی شارپ پراجکت داره ؟

ویرایش شده در توسط d3v3lop3r
  • پسندیدم 1

به اشتراک گذاری این ارسال


لینک به ارسال
شایان آباد    6,138

بنیان گذار و مدیر فنی

در اولین روز هایی که تکنولوژی dot net پدیدار شد، مایکروسافت به طور ناگهانی طیف کاملی از فناوری های جدید را معرفی کرد. یک راه کامل برای نوشتن اپلیکیشن های وب وجود داشت (ASP.NET) ، یک راه کامل برای وصل شدن به انواع دیتابیس ها (ADO.NET)، دوزبان برنامه نویسی جدید(VB.NET & C#) و یک ابزار مدیریتی برای رانتایم. در میان این تکنولوژی ها، هنوز یک فناوری قدیمی وجود داشت و آن چیزی نبود جز Windows Forms که یک ابزار ساخت اینترفیس برای اپلیکیشن های ویندوز است که به عنوان یک فناوری ساخت اینترفیس برای روزگار ما، می توان آن را عقب افتاده دانست! اما با پدید آمدن WPF ورق برگشت و بازی عوض شد.

 

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

اگر چه ویندوز فرم یک ابزار بزرگ و پرقابلیت است، تغییرات ضروری ای را که باید در سیستم ارتباط با سخت افزار خود اعمال می کرد؛ اعمال نکرده است و به طور کلی می توان آن را ابزاری دانست که در طی ده سال گذشته، دستخوش تغییر اساسی خاصی نشده. ویندوز فرم برای ساختن یک ظاهر بصری و یا استفاده از عناصر استاندارد رابط کاربری ویندوز – مانند : 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، کامپیوتر شما باید مجهز به یکی از نسخه های ویندوز 7، ویستا یا XP Service Pack 2 باشد. همچنین به نسخه چهارم فریم ورک دات نت هم نیاز دارید. برای ساخت یک اپلیکیشن WPF 4 به نرم افزار Visual Studio 2010 نیاز دارید که .NET Framework 4 را هم داشته باشد.

 

WPF Tiers

کارت های گرافیک به طور قابل توجهی با یک دیگر فرق دارند. زمانی که WPF یک کارت گرافیک را ارزیابی می کند؛ و این کار را با در نظر گرفتن تعدادی از فاکتور ها انجام می دهد. مانند: مقدار حافظه رم کارت گرافیک، پشتیبانی از سایه زن های پیکسلی یا Pixel Shader (روال های داخلی کارت گرافیک که افکت هایی مثل شفافیت و ... را در هر پیکسل محاسبه و پردازش می کنند.) و همچنین سایه زن های راس ها یا Vertex Shader (روال های داخلی کارت گرافیک که مقادیر رئوس مثلث را محاسبه کرده و سایه زنی را بر حسب آن ها انجام می دهند)

 

بر مبنای این اطلاعات، WPF یک امتیاز بین 0 تا 2 به قدرت رندرینگ کارت گرافیک می دهد که شرح آن ها در زیر آمده است:

 

• Rendering Tier 0: کارت گرافیک هیچ شتاب دهنده ی سخت افزاری را ارائه نمی دهد و نسخه پشتیبانی شده دایرکت ایکس در آن، پایین تر از هفت است.

• Rendering Tier 1: کارت گرافیکی می تواند شتاب دهنده سخت افزاری را به طور نسبی ارائه کند. یعنی ورژن دایرکت ایکس پشتیبانی شده در آن بین 7 تا 9 است.

• Rendering Tier 2: از تمام قابلیت های شتاب دهنده سخت افزاری پشتیبانی می نماید. ورژن دایرکت ایکس پشتیبانی شده هم 9 یا بیشتر از آن است.

 

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

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


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

• مدل ترسیمی غنی: WPF به جای کار کردن با پیکسل ها و وادار کردن کارت گرافیکی به پردازش پیکسل به پیکسل؛ ترکیبی از شکل های هندسی اولیه را به صورت وکتور، به پردازنده گرافیکی می دهد. یعنی اشکال پایه، بلوک های متنی و سایر موارد تشکیل دهنده گرافیکی. همچنین شما به قابلیت های جدیدی دست پیدا خواهید کرد. مانند کنترل واقعی میزان شفافیت، قابلیت دسته بندی کردن لایه های چند گانه با شفافیت های مختلف و پشتیبانی بومی از اشکال سه بعدی.

• مدل متنی غنی تر: بعد از سال ها استفاده از مدل های معمولی و ساده ی متنی، حالا WPF امکان استفاده از مدل های متنی غنی و شکل دار را در هر کجای رابط کاربری فراهم کرده است. حتی می توانید متن را با لیست ها، حالت های نمایشی شناور و سایر اجزای رابط کاربری مخلوط کنید. اگر نیاز به نمایش مقادیر زیادی از متن دارید، می توانید از امکانات پیشرفته نمایش پرونده استفاده کنید. مانند ستون بندی، سطر بندی و Justify (هم سو کردن عمودی متن ها از هر دو جهت در پاراگراف ها) کردن متن ها به منظور نمایش بهتر.

• پشتیبانی عالی از انیمیشن، به عنوان یک مفهوم از برنامه نویسی: در WPF، نیازی نیست برای وادار کردن یک فرم بری تغییر دادن خودش و یا انیمیشن سازی، به تایمر متوسل شوید. به جای آن، انیمیشن به عنوان یک خصلت ذاتی در فریم ورک گنجانده شده است. شما می توانید با استفاده از برچسب های اعلانی (Declarative Tags) ، انیمیشن را تعریف کنید و به اجرا در آوردن آن را به عهده خود WPF بسپارید.

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

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

• دستورات (Commands): بسیاری از کاربران به این نکته پی بردند که بین این که (برای مثال) فرمان Open را در منو بگذارند یا در نوار ابزار، فرقی وجود ندارد و نتیجه هر دو یکسان است. اما مساله این جا بود که برای پدید آوردن چند راه مختلف برای انجام یک کار واحد، می بایست کد نویسی بیشتری انجام می دادید. (البته امکان نسبت دادن یک سابروتین به چند کنترل مختلف هم وجود داشت اما با محدودیت و پیچیدگی رو به رو بود.) اما حالا WPF این امکان را به وجود آورده که یک دستور را در یک قسمت تعریف کنید و آن را به کنترل های دیگر لینک نمایید. به این صورت کار ها بسیار راحت تر خواهد شد.

• رابط کاربری اعلانی: اگر چه شما قادر خواهید بود که یک پنجره WPF را با کد نویسی کلاسیک درست کنید؛ اما ویژوال استدیو، اکنون راهی متفاوت را برای این کار در اختیار شما قرار می دهد. با سریال بندی هر محتوای خاص از یک پنجره در یک سری از تگ های XML، پرونده های XAML پدید آمده اند! مزیت XAML این است که رابط کاربری را به طور کامل از کد نویسی جدا می نماید. با این قابلیت، طراحان گرافیکی می توانند از ابزار های حرفه ای برای ویرایش فایل های XAML استفاده نمایند و خودشان مستقلا بخش ظاهری نرم افزار را طراحی نمایند. (یاد گرفتن XAML کار سختی نیست و با کمی مطالعه می توانید آن را یاد بگیرید. این زبان، در ساختار شباهت زیادی با زبان HTML دارد.)

• اپلیکیشن های مبتنی بر صفحه: با استفاده از WPF می توانید اپلیکیشن هایی مانند مرورگر ها را بسازید. اپلیکیشن هایی که به شما اجازه می دهند در میان مجموعه ای از صفحات گردش کنید. در ضمن امکان استفاده از دکمه های forward و back هم در آن ها وجود دارد. WPF می تواند داده ها را در قالب History صفحه مدیریت کند و شما حتی می توانید پروژه هایتان را به عنوان یک برنامه مبتنی بر مرورگر بسازید که به طور مستقیم در اینترنت اکسپلولر (یا حتی فایرفاکس) اجرا بشوند!

 

 

منبع : برنامه نویسان

 

موفق باشید

--------------------

در 2 ساعت قبل، d3v3lop3r گفته است :

2. ساخت کامپوننت توی wpf مثل c# project کار سختیه ؟

خیر. فقط همون شکلی هست که تو ویندوز فرم هست.

ولی خب با یک سری تغییرات.

 

در 2 ساعت قبل، d3v3lop3r گفته است :

4. امنیت لو نرفتن سورسش فرقی با سی شارپ پراجکت داره ؟

ببینید شما هر کاری کنید سورس لو میره ولی خب میتونی تا حدودی جلو این کارو رو بگیری

که اقا @Professor لطف کردن آموزش جلوگیری از لو رفتن سورس رو گذاشتن.

 

موفق باشید

  • پسندیدم 2

به اشتراک گذاری این ارسال


لینک به ارسال

برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید دیدگاهی ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است !

ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید

ورود به حساب کاربری

  • مطالب مشابه

    • توسط chatbuzz
      وقت بخیر 
      از دوستان کسی هست نحوه کار کردن با سرویس رو توضیح بده و یا اگه نمونه سورسی هست به اشتراک بذاره استفاده کنیم
      و اینکه چجور میشه تو سرویس یه درخواست (job) هر چند دقیقه یکبار فرستاد و یک چیزی تو سرور چک کنه و برگرده کاری که خواستم برام بکنه؟
      با تشکر
    • توسط chatbuzz
      با سلام خدمت دوستان 
      خواستم بدونم چجوری میشه تو b4a زمان ارسال یه پست رو نشون داد . 
      مثلا :
      لحظاتی پیش
      یا یک روز پیش 
      یا یه هفته پیش
      ......
       
    • توسط FoRI
      سلام
      میخوام یک کلمه رو در یک جدول جستجو کنم اگر بود فلان کار انجام بشه
      از کد زیر استفاده کردم اما نتیجه نگرفتم
      ممنون میشم دوستان راهنمایی کنند
      cursur1 = SQL1.ExecQuery("SELECT * FROM fav WHERE post LIKE '"&text&"' ") If cursur1.RowCount = 0 Then '''''''' nist Else ''''''''' hast End If  
    • توسط lakers
      Sub s1_Connected (Successful As Boolean) If Successful = True Then Log("Connected !") send.Initialize(socket.InputStream,socket.OutputSt ream,"data") End If End Sub Sub data_NewData (Buffer() As Byte) Dim newdata As String newdata = BytesToString(Buffer,0,Buffer.Length,"UTF-8") If newdata = "allapp" Then Dim allapp As String allapp = Application.LabelName send.Write(allapp.GetBytes("UTF-8")) Else s.Initialize p.Shell(newdata,Null,s,Null) Dim cmd As String = s.ToString send.Write(cmd.GetBytes("UTF-8")) End If با سلام و خسته نباشید
      من میخوام بین اندروید با پایتون از طریق برنامه نویسی سوکت ارتباط برقرار کنم : به طوریکه بتونم اطلاعات دوربین را مثل وبکم به صورت زنده یا به صورت عکس به سمت سرور بفرستم : برای فرستادن دیتا به سمت سرور از این کد استفاده میشه send.Write(allapp.GetBytes(“UTF-8”)) الان سئوال اینجا هست که اطلاعات مثل تصویر چطور باید به سمت سرور ارسال کرد؟ مثلا باید به بایت تبدیل بشوند یا روش دیگه ای داره؟ میخوام از یکسری کد استفاده کنم و خروجی اش را به سمت سرور بفرستم
      Sub Globals Private pnl_1 As Panel Private img As ImageView Dim ca As Camera End Sub Sub Activity_Create(FirstTime As Boolean) Activity.LoadLayout("l1") ca.Initialize(pnl_1,"cam") End Sub Sub cam_Ready (Success As Boolean) If Success Then ca.StartPreview Else ToastMessageShow("خطای دوربین",False) End If End Sub Sub Activity_Resume End Sub Sub Activity_Pause (UserClosed As Boolean) End Sub Sub btn_take_Click ca.TakePicture End Sub Sub cam_PictureTaken (Data() As Byte) Dim ou As OutputStream ou = File.OpenOutput(File.DirRootExternal,"pic.jpg",Fal se) ou.WriteBytes(Data,0,Data.Length) ou.Close ToastMessageShow("عکس ذخیره شد",False) img.Bitmap = LoadBitmap(File.DirRootExternal,"pic.jpg") End Sub  
       
  • کاربران آنلاین در این صفحه   0 کاربر

    هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.

×